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_metadata、get_lineage、get_entity_details、get_glossary_terms、create_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 章节
典型适用场景
- 企业数据目录:统一管理分散在 100+ 数据源的表/仪表盘/API,元数据一站式搜索
- AI Agent 数据上下文:通过 MCP Server 给 LLM Agent 提供可信的数据血缘、Schema、口径说明
- 数据治理落地:Glossary + Classification + Data Contract + 质量测试集中挂钩到数据资产
- 数据血缘分析:列级血缘追踪,评估字段变更影响范围
- 团队知识沉淀:Memory 系统将对话/决策附着到数据资产,新人接手不再靠口口相传
- 数据合同管理:定义 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 基金会 |
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 状态。