FEATURED · 精选文章

DataHub 开源 AI 数据目录实战指南:架构解析、快速部署与五大集成示例

发布时间 / 2026/9/15 15:10:44
来源 / 创域科博编辑部
栏目 / 资讯中心
DataHub 开源 AI 数据目录实战指南:架构解析、快速部署与五大集成示例 DataHub 开源 AI 数据目录实战指南架构解析、快速部署与五大集成示例【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub本指南以 DataHub 仓库根目录 README.md 为核心骨架系统讲解这款由 LinkedIn 开源的企业级元数据平台——它通过实时流式摄取把数据仓库、数据湖、BI 平台与 AI Agent 连接成统一元数据图谱支撑数据发现、治理与可观测性。读完本文你将掌握 DataHub 的三种启动方式、架构组成以及 Snowflake 元数据摄取、Python SDK 搜索、GraphQL 血缘查询、元数据写入和 MCP AI 助手接入五类可落地的实战方案。DataHub 是什么为数据栈构建统一元数据神经系统现代数据栈被拆散在数十种工具中——数仓、数据湖、BI 平台、ML 系统、AI Agent、编排引擎。找到正确数据、理解血缘、保证治理往往像在迷宫中摸索。DataHub 给出的解法是作为数据栈的中枢神经系统通过实时流式或批量摄取连接所有工具形成统一的元数据图谱metadata graph。与静态数据目录不同DataHub 强调元数据的新鲜度与可操作性实时流式更新元数据在秒级而非小时/天级内同步核心依托 Kafka 消息通道AI-Ready原生支持通过 Model Context ProtocolMCP接入 Cursor、Claude Desktop、Cline 等 AI 编码助手为 LLM 提供可信的数据上下文可扩展的摄取架构推/拉push/pull双模式框架内置 80 生产级连接器可抽取列级血缘、使用统计、数据画像与质量指标开发者友好提供 GraphQL、OpenAPI 等富 API以及 Python/Java SDK 与 CLI 工具企业级能力内置认证、授权、审计追踪等安全机制开源协议Apache 2.0 许可厂商中立、社区驱动参见 LICENSE。需要澄清的是本项目与 datahub.io一个独立的公开数据集托管服务没有任何关系项目曾使用 datahubproject.io 域名现统一在 datahub.com 下运营文档与官网。快速开始三种方式启动 DataHubREADME 提供了由快到深的三种启动路径覆盖看演示、本地跑、改源码三类诉求。方式一托管在线演示零安装无需任何安装直接访问官方 Live Demodemo.datahub.com即可体验预置了示例数据的完整 DataHub 实例适合先感受产品形态。方式二本地 Docker 快速启动推荐前置要求Docker Desktop 分配 8GB 内存。首先安装 DataHub CLIHomebrewmacOS/Linux与 pip任意平台二选一# HomebrewmacOS / Linux brew install datahub-project/tap/datahub # 或 pip任意平台 python3 -m pip install --upgrade pip wheel setuptools python3 -m pip install --upgrade acryl-datahub然后一条命令拉起全栈datahub docker quickstart # 访问地址http://localhost:9002 # 默认凭据datahub / datahubpip 方式下也可以使用uv等其他 Python 包管理器。该命令背后的编排定义在仓库的 docker/profiles/docker-compose.yml它通过include指令聚合了 5 个子 compose 文件——docker-compose.prerequisites.ymlMySQL、Kafka、Elasticsearch 等存储层、docker-compose.actions.ymlActions 容器、docker-compose.frontend.yml前端、docker-compose.gms.ymlGMS 及 consumers、system-update 等其余组件、docker-compose.ollama.yml可选的本地 Ollama 嵌入服务。启动完成后你会得到全栈组件GMS 后端、React 前端、Elasticsearch、MySQL、Kafka示例数据预置的数据集、血缘关系与 Owner便于直接探索可摄取状态随时可接入本地或云上数据源。更完整的参数化安装说明参见 docs/quickstart.md。方式三源码运行面向贡献者适合想修改核心代码或直接基于仓库运行的高级用户# 克隆仓库 git clone https://github.com/GitHub_Trending/da/datahub.git cd datahub # 一次性环境初始化Python CLI 开发工具链 scripts/dev/datahub-dev.sh setup # 启动 DataHubGradle profiles 位于 docker/profiles scripts/dev/datahub-dev.sh start # 访问 http://localhost:9002默认凭据 datahub / datahub部署模型与架构概览三种部署形态部署方式适用场景仓库内参考托管 SaaSDataHub Cloud零基础设施、SLA 保障、企业级官方托管服务Docker 自托管开发环境与小团队docs/quickstart.mdKubernetesHelm生产环境推荐docs/deploy/kubernetes.md更多部署场景AWS、Azure、GCP、环境变量配置统一收录在 docs/deploy/ 目录下例如 AWS 部署可参考 docs/deploy/aws.md。架构设计原则流式优先Streaming-First元数据变更通过 Kafka 实时传递保证秒级新鲜度API 优先API-First所有功能均可通过 API 触达GraphQL 与 OpenAPI 双通道可扩展Extensible插件化架构支持自定义实体类型可参考 docs/architecture/architecture.md 了解组件、存储层、API 与设计决策云原生Cloud-Native面向 Kubernetes 部署设计。五大实战示例从摄取到 AI 集成以下是 README 提供的完整可运行示例覆盖元数据进得来、搜得到、查得清、写得上、AI 用得上的完整链路。示例 1从 Snowflake 摄取元数据场景抽取 Snowflake 数仓的表元数据、列 Schema 与使用统计。前置条件DataHub 实例已运行本地或远端具备只读权限的 Snowflake 账号已安装 CLIpip install acryl-datahub[snowflake]。摄取配置snowflake_recipe.ymlsource: type: snowflake config: # 连接信息 account_id: xy12345.us-east-1 warehouse: COMPUTE_WH username: ${SNOWFLAKE_USER} password: ${SNOWFLAKE_PASSWORD} # 可选过滤特定数据库 database_pattern: allow: - ANALYTICS_DB - MARKETING_DB sink: type: datahub-rest config: server: http://localhost:8080执行摄取datahub ingest -c snowflake_recipe.yml # 预期输出 # ✓ Connecting to Snowflake... # ✓ Discovered 150 tables in ANALYTICS_DB # ✓ Discovered 75 tables in MARKETING_DB # ✓ Ingesting metadata... # ✓ Successfully ingested 225 datasets to DataHub摄取进的内容表与视图的 Schema列、类型、描述、表统计信息行数、大小、最后修改时间、上下游血缘关系、使用统计查询频率、Top 用户。Snowflake 源的实现位于 metadata-ingestion/src/datahub/ingestion/source/snowflake/snowflake_v2.py更多摄取源可浏览 metadata-ingestion/README.md。示例 2用 Python SDK 搜索数据集场景以编程方式检索 DataHub 目录中的数据集并获取 URN。前置条件DataHub 实例可访问Python 3.8已安装acryl-datahub[datahub-rest]。from datahub.ingestion.graph.client import DatahubClientConfig, DataHubGraph # 初始化 DataHub 客户端 config DatahubClientConfig(serverhttp://localhost:8080) graph DataHubGraph(config) # 搜索包含 customer 的数据集 urns graph.get_urns_by_filter( entity_types[dataset], querycustomer, ) for urn in urns: print(fFound: {urn}) # 示例输出 # Found: urn:li:dataset:(urn:li:dataPlatform:snowflake,analytics.customer_profiles,PROD) # Found: urn:li:dataset:(urn:li:dataPlatform:bigquery,marketing.customer_segments,PROD)返回格式每个结果都是唯一标识数据集的 URN 字符串可进一步通过 GraphQL 或 REST API 拉取完整元数据。实现说明DataHubGraph类定义于 metadata-ingestion/src/datahub/ingestion/graph/client.py继承自DatahubRestEmitter并混入 OpenAPI 与实体版本化 API。get_urns_by_filterclient.py#L1082内部将过滤条件合成为 GraphQL 搜索请求并滚动拉取结果其关键参数包括entity_types参与搜索的实体类型列表为 None 时返回全部类型platform/platform_instance/env按平台、平台实例、环境如 PROD/DEV过滤query搜索关键字缺省时后端按*处理container限定在某个容器 URN 之下递归包含子容器status删除状态过滤默认排除软删除实体sort_by/sort_order按可搜索字段如lastModifiedAt排序。示例 3通过 GraphQL 查询血缘场景获取某个数据集的上游来源与下游消费方。前置条件GMS 端点可访问已从搜索或摄取得到数据集 URN。GraphQL 查询query GetLineage { dataset( urn: urn:li:dataset:(urn:li:dataPlatform:snowflake,analytics.customer_profiles,PROD) ) { # 上游依赖源表 upstream: lineage(input: { direction: UPSTREAM }) { entities { urn ... on Dataset { name platform { name } } } } # 下游依赖消费表/仪表盘 downstream: lineage(input: { direction: DOWNSTREAM }) { entities { urn type ... on Dataset { name platform { name } } ... on Dashboard { dashboardId tool } } } } }通过 cURL 执行curl -X POST http://localhost:8080/api/graphql \ -H Content-Type: application/json \ -d {query: query GetLineage { ... }}响应结构upstream流入该数据集的源表数组downstream消费该数据集的数据集、仪表盘或 ML 模型数组每个实体包含 URN、类型及基础元数据。GraphQL 层的血缘能力由 datahub-graphql-core 中的 resolver 实现例如 datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.javaGraphQL 入口 Servlet 位于 metadata-service 的 graphql-servlet-impl 模块graphql-servlet-impl/build.gradle。示例 4用 Python API 添加文档与自定义属性场景编程式地新增或更新数据集文档、自定义属性用于治理与可发现性。前置条件已安装 DataHub Python SDK对实例有写权限数据集已通过摄取存在于 DataHub 中。from datahub.metadata.schema_classes import DatasetPropertiesClass from datahub.emitter.mce_builder import make_dataset_urn from datahub.emitter.rest_emitter import DatahubRestEmitter # 创建向 DataHub 发送元数据的 Emitter emitter DatahubRestEmitter(http://localhost:8080) # 创建数据集 URN唯一标识 dataset_urn make_dataset_urn( platformsnowflake, nameanalytics.customer_profiles, envPROD ) # 定义数据集属性 properties DatasetPropertiesClass( description Customer profiles aggregated from CRM and transaction data. **Update Schedule:** Updated nightly via Airflow DAG customer_profile_etl **Data Retention:** 7 years for compliance **Owner:** Data Platform Team , customProperties{ owner_team: data-platform, update_frequency: daily, data_sensitivity: PII, upstream_dag: customer_profile_etl, business_domain: customer_analytics } ) # 向 DataHub 发送元数据变更提案MCP emitter.emit_mcp( entityUrndataset_urn, aspectNamedatasetProperties, aspectproperties ) print(f✓ Successfully updated documentation for {dataset_urn})效果在 DataHub UI 中呈现富文本 Markdown 文档设置用于治理与发现的 customProperties数据集可按自定义属性值被搜索命中支持过滤式检索如找出所有 PII 数据集。实现说明DatahubRestEmitter类位于 metadata-ingestion/src/datahub/emitter/rest_emitter.py除 GMS 地址外还支持token、timeout_sec、retry_status_codes、retry_max_times、extra_headers、disable_ssl_verification等参数可满足带认证、限流与重试的生产环境诉求。URN 构造函数make_dataset_urn(platform, name, env)定义于 metadata-ingestion/src/datahub/emitter/mce_builder.py。示例 5通过 Model Context Protocol 接入 AI 编码助手场景让 Cursor、Claude Desktop、Cline 等 AI 工具直接在 IDE 中查询 DataHub 元数据无需离开编码环境。前置条件DataHub 实例可访问已安装 MCP 兼容的 AI 工具Node.js 18。快速初始化# 初始化 DataHub 的 MCP Server npx -y acryldata/mcp-server-datahub init # 按交互提示依次配置 # - DataHub GMS 端点例如 http://localhost:8080 # - 认证 Token如需 # - MCP Server 设置配置 AI 工具Claude Desktop 在~/Library/Application Support/Claude/claude_desktop_config.json中添加{ mcpServers: { datahub: { command: npx, args: [-y, acryldata/mcp-server-datahub] } } }Cursor 则在 Settings → Features → MCP Servers 中配置。可以向 AI 提出的问题生产环境中有哪些包含客户 PII 的数据集展示 analytics.revenue_table 的血缘关系Looker 中Revenue Dashboard的负责人是谁找出 marketing 域下的所有数据集user_events 表的 Schema 是什么列出被标记为 critical 或 sensitive 的数据集收益不离开 IDE 即可查询元数据使用自然语言而无需编写 SQL/GraphQL实时访问 DataHub 的元数据图谱在编码过程中即时理解数据上下文。关于 MCP 与 DataHub 的更多机制仓库文档中亦有专门讨论例如 docs/advanced/mcp-mcl.md 与 docs/dev-guides/agent-context/。常见应用场景速查应用场景能力说明仓库内参考数据发现帮助用户为分析与 ML 找到正确的数据docs/features/feature-guides/影响分析变更前评估下游影响docs/lineage/sql_parsing.md 等血缘文档数据治理实施策略、PII 分类、访问管理docs/authorization/access-policies-guide.md数据质量监控新鲜度、数据量、Schema 变更docs/assertions/open-assertions-spec.md文档中心化集中沉淀数据文档与知识docs/automations/docs-propagation.md协作通过讨论与 Ownership 培育数据文化平台内置功能生态、社区与贡献官方仓库与周边生态datahub本仓库核心平台包含元数据模型、服务、连接器与 Web UIdatahub-actions响应元数据变更的实时事件框架仓库内代码位于 datahub-actions/示例配置见 datahub-actions/examples/metadata_change_sync.yamldatahub-helm面向 Kubernetes 生产部署的 Helm Chartsmcp-server-datahub用于 AI 集成的 Model Context Protocol 服务器。集成矩阵按类别BI 与分析Tableau、Looker、Power BI、Superset、Metabase、Mode、Redash数据仓库Snowflake、BigQuery、Redshift、Databricks、Synapse、ClickHouse数据编排Airflow、dbt、Dagster、Prefect、LuigiML 平台SageMaker、MLflow、Feast、Kubeflow、Weights Biases数据集成Fivetran、Airbyte、Stitch、Matillion。上述各连接器的具体实现与文档可参考 metadata-ingestion/docs/sources/内含 340 个来源文档与 metadata-ingestion/README.md。社区与支持渠道月度 Town Hall 社区会议路线图更新、在线演示、用户案例Slack 社区实时交流与答疑GitHub Discussions 技术讨论与功能请求、GitHub Issues 缺陷报告Stack Overflowtagdatahub技术问答。如何参与贡献欢迎社区贡献详细指引见 docs/CONTRIBUTING.md。可以优先从标记为 Good First Issue 的议题入手相关开发流程包括源码启动、测试与提交规范在仓库的 AGENTS.md 与 docs/CONTRIBUTING.md 中均有说明。开源协议DataHub 以 Apache License 2.0 开源见 LICENSE允许商用、修改、分发、专利使用与私有使用。版权信息为 LinkedIn Corporation 与 DataHub Project Contributors任何使用均需遵循许可证条款。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻