open-metadata/OpenMetadata · 上手攻略

  • 仓库:open-metadata/OpenMetadata
  • 链接:https://github.com/open-metadata/OpenMetadata
  • 分类:skill
  • 作者:Tom
  • 更新:2026-08-18

是什么

OpenMetadata 是一个开源的数据上下文层与元数据管理平台,定位为「AI 时代的数据目录 + 组织记忆 + 语义治理中枢」。它将技术元数据、数据质量信号、血缘(Lineage)、所有权、使用量、治理策略、对话记忆、业务语义(Glossary/Classification/Metrics)全部连接到一个统一的元数据知识图谱中,供人类数据团队、AI 助手和 AI Agent 查询和使用。

核心定位语:"AI doesn't need another raw database connector. AI needs context + memory."

核心特性: - 130+ 开箱即用连接器:数据仓库、湖、BI 工具、消息队列、ML 平台等 - 统一元数据图谱:资产→列→负责人→团队→质量测试→血缘→策略→Glossary→数据合同全部互联 - AI Agent 原生支持:内置 MCP Server,LLM 可通过自然语言查询元数据图谱 - 业务语义层:Glossary、Classification、Metrics、Domains、Data Products、Data Contracts - Memory(记忆)系统:将团队对话、决策、假设记录为可复用的受治理记忆,附着于数据资产 - 语义搜索:按含义搜索(而非仅关键词),支持跨工具/跨团队的概念对齐 - 开源标准:基于 DCAT、OpenLineage、ODCS、PROV-O、RDF/OWL、JSON-LD 等

Stars:约 14,846(2026-08)。


解决什么问题

企业数据平台的典型困境: 1. 数据找不到:数据资产分散在 100+ 表/仪表盘,名字还不统一 2. 含义不清晰cust_id 是客户 ID 还是合同 ID?哪个表有 PII 字段? 3. 血缘不透明:修改一个字段不知道会影响哪些下游报表 4. AI 用不好数据:LLM 接入原始数据库,只拿到字段名,不知道数据是否可信、谁负责、什么业务口径 5. 治理落地难:Glossary / 数据合同 / 质量阈值各自孤立,无法跟数据资产挂钩

OpenMetadata 通过统一的元数据图谱 + 130+ 连接器 + MCP 接口,让每个数据消费者(人/AI)都能在正确上下文中找到、理解和安全使用数据。


快速安装

方式一:Docker Compose(一行启动,最适合 PoC)

# 克隆仓库
git clone https://github.com/open-metadata/OpenMetadata.git
cd OpenMetadata

# 启动全部组件(OpenMetadata Server + PostgreSQL + Elasticsearch + MySQL)
docker-compose up -d

# 访问 UI
# http://localhost:8585
# 默认管理员登录:admin@open-metadata.org / admin

⚠️ 首次启动约需 3-5 分钟(各服务健康检查到位后 UI 才可用)。

方式二:Kubernetes(生产推荐)

参考官方 Helm Charts:

helm repo add open-metadata https://charts.open-metadata.org
helm install openmetadata open-metadata/openmetadata \
  --set postgresql.enabled=true \
  --set mysql.enabled=false

⚠️ Kubernetes 部署需提前准备好 Ingress Controller 和持久化存储;生产级建议阅读 官方 Kubernetes 部署文档

Python SDK(仅客户端,非服务端)

ingesting 元数据或编程访问时安装:

# 用于元数据读写、血缘、Glossary、质量测试
pip install "openmetadata-ingestion"

# 用于给 LLM / Agent 提供受治理的元数据访问(含 MCP 支持)
pip install data-ai-sdk

⚠️ 版本匹配规则:SDK 版本必须与 OpenMetadata Server 版本匹配;若版本不匹配,部分 API 可能报错。建议 Server 用 Docker latest tag,SDK 装最新版本。

MCP Server(AI Agent 集成)

OpenMetadata 内置 MCP Server,端点:/mcp

from data_ai_sdk import AISdk, AISdkConfig

client = AISdk.from_config(AISdkConfig.from_env())

# 转为 LangChain Tools
tools = client.mcp.as_langchain_tools()

# 直接调用 MCP 工具
result = client.mcp.call_tool("search_metadata", {"query": "customers"})

MCP Server 暴露的工具包括:search_metadataget_lineageget_entity_detailsget_glossary_termscreate_data_quality_test 等。


核心用法

1. 配置数据源连接器(ingestion)

OpenMetadata 通过 Ingestion Pipeline 将各数据源的元数据拉入图谱:

# 示例:配置 PostgreSQL 连接器
source:
  type: postgres
  serviceName: my-postgres-db
  sourceConfig:
    config:
      type: DatabaseMetadata

sink:
  type: metadata-rest
  config:
    apiEndpoint: http://localhost:8585/api

workflowConfig:
  openMetadataServerConfig:
    hostPort: "localhost:8585"
    authProvider: openmetadata
    securityConfig:
      jwtToken: "<your-jwt-token>"

启动 ingestion:

metadata ingest -c /path/to/pipeline.yaml

2. Python SDK 读取表元数据

from metadata.ingestion.ometa.ometa_api import OpenMetadata
from metadata.generated.schema.entity.data.table import Table
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
    OpenMetadataConnection, AuthProvider
)
from metadata.generated.schema.security.client.openMetadataJWTClientConfig import (
    OpenMetadataJWTClientConfig
)

metadata = OpenMetadata(OpenMetadataConnection(
    hostPort="http://localhost:8585/api",
    authProvider=AuthProvider.openmetadata,
    securityConfig=OpenMetadataJWTClientConfig(jwtToken="<your-token>"),
))
assert metadata.health_check()

# 按 FQN 获取表信息
table = metadata.get_by_name(
    entity=Table,
    fqn="sample_data.ecommerce_db.shopify.raw_product_catalog"
)
print(table.description, [c.name.root for c in table.columns])

3. 语义搜索找数据

# 找"客户购买数据,含已知质量问题,含最近修复说明"(跨语义搜索)
results = metadata.search_entities(
    query="trusted customer purchase datasets data quality issues recent fix notes",
    entity_type="table"
)

4. 查看血缘

# 获取表的上下游血缘
lineage = metadata.get_lineage(table.fqn, up_depth=2, down_depth=2)

5. 创建数据质量测试

from metadata.ingestion.api.workflow import Workflow

test_workflow = {
    "source": {
        "type": "CustomPython",
        "serviceName": "quality_tests",
        "sourceConfig": {
            "config": {
                "python": {
                    "check": "col('amount') > 0",
                    "table": "sales.orders"
                }
            }
        }
    },
    "sink": {
        "type": "metadata-rest",
        "config": {"apiEndpoint": "http://localhost:8585/api"}
    }
}
# ⚠️ 精确 API 格式请参考官方文档 Data Quality 章节

典型适用场景

  1. 企业数据目录:统一管理分散在 100+ 数据源的表/仪表盘/API,元数据一站式搜索
  2. AI Agent 数据上下文:通过 MCP Server 给 LLM Agent 提供可信的数据血缘、Schema、口径说明
  3. 数据治理落地:Glossary + Classification + Data Contract + 质量测试集中挂钩到数据资产
  4. 数据血缘分析:列级血缘追踪,评估字段变更影响范围
  5. 团队知识沉淀:Memory 系统将对话/决策附着到数据资产,新人接手不再靠口口相传
  6. 数据合同管理:定义 SLA / 数据质量标准,与资产绑定,超标自动告警

坑与注意

说明 应对
版本匹配严 SDK 版本必须与 Server 版本严格匹配,否则 API 不兼容 生产环境记录 Server 版本,SDK 同步跟进;先用 Docker latest 测
Ingestion 复杂度 130+ 连接器,各有配置差异;复杂源(Snowflake/ BigQuery)需要云凭证配置 参考 官方 Connector 文档,先用 UI 引导式配置
数据量大时性能 元数据图谱查询在资产过万时可能出现延迟 生产环境建议独立部署 Elasticsearch + 定期索引优化
权限体系设计 默认全开;生产需配置 Roles + Policies + Classifications 接入前设计好数据分类(Classification)和角色(Roles)体系
Memory 是新功能 Memory(图谱记忆)模块较新,企业级用法(跨团队复用)还在演进 POC 先聚焦 Catalog + Lineage + Quality,Memory 作为第二阶段
JWT Token 管理 SDK 连接需要 JWT Token,需安全存储和轮换 生产环境建议配合 SSO(Google/Okta/LDAP)做认证,Token 只做系统间调用

与同类对比

特性 OpenMetadata Datahub Apache Atlas DataHub (LinkedIn)
连接器数量 130+ 80+ 30+ 70+
列级血缘
语义层(Glossary)
MCP / Agent 接口 ✅(内置) ⚠️(插件)
Memory 系统
数据合同
开源协议 Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0
部署复杂度 中(Docker Compose) 低(Docker Compose) 高(原生 Kafka/ZK)
Stars ~14,800 ~11,000 ~3,800 N/A(企业版)
公司支持 Collate, Inc.(商业版) Acryl Data Apache 基金会 LinkedIn

OpenMetadata 的差异化在于 MCP 原生 + Memory + Data Contract 三合一,且 Stars 数量在同类中最高,社区活跃度好。Datahub 更成熟但 Agent 集成需额外工作;Apache Atlas 偏底层,UI 和生态较弱。


一句话推荐结论

若你的数据平台需要同时解决「AI Agent 数据上下文 + 团队知识沉淀 + 数据合同治理」三个问题,OpenMetadata 是目前生态最完整的开源选择;若只需要轻量元数据目录,Datahub 更简单。


来源: - GitHub README:https://github.com/open-metadata/OpenMetadata - 官方文档:https://docs.open-metadata.org - MCP Server 指南:https://docs.open-metadata.org/latest/how-to-guides/mcp - Python SDK 文档:https://docs.open-metadata.org/latest/sdk/python - Docker 部署文档:https://docs.open-metadata.org/latest/deployment/docker - Kubernetes 部署文档:https://docs.open-metadata.org/latest/deployment/kubernetes

⚠️ 数字核验:连接器数量(130+)和 Stars 数(~14,846)采自 GitHub 页面 2026-08;SDK/Server 版本匹配要求来自官方文档;Memory / Data Contract 功能为 2025-2026 新增,建议使用前在官方文档核实各模块 GA 状态。