
飞熊实战向 · 数据更新于 2026-08-17 · 目标:从 Docker 部署到接数据源 + 集成 AI Agent + 数据契约 + 数据质量,4 步让你的客户在 30 分钟内看到企业数据全景图。OpenMetadata 是当下池子第一的 一站式数据治理平台 ,跟横评里其他 5 个项目比, 覆盖最广。
0. 为什么是 OpenMetadata
横评数据(2026-08-17):
| 项目 | Stars | 覆盖 | License |
|---|---|---|---|
| OpenMetadata | 14,891 ⭐ 第一 | catalog + lineage + quality + contract + AI MCP | Apache-2.0 ✅ |
| DataHub | 12,534 | catalog + lineage + quality | Apache-2.0 ✅ |
| Great Expectations | 11,713 | quality only | Apache-2.0 ✅ |
| OpenLineage | 2,604 | lineage standard only | Apache-2.0 ✅ |
| Marquez | 2,259 | lineage backend only | Apache-2.0 ✅ |
| Apache Atlas | 2,132 | Hadoop metadata + classification | Apache-2.0 ✅ |
OpenMetadata 是唯一一站式——130+ 连接器 + 4 大核心能力 + AI 原生(MCP Server + AI SDK + Context Center)。
官网定位:“The #1 open context layer for humans, AI assistants, and agents.”
1. 环境准备
1.1 必备依赖
docker --version # ≥ 20.10
docker compose version # ≥ 2.0
1.2 硬件最低要求
| 资源 | 最低 | 推荐 |
|---|---|---|
| CPU | 4 核 | 8 核 |
| 内存 | 8 GB | 16 GB |
| 磁盘 | 20 GB | 50 GB SSD |
OpenMetadata 自带 4 个组件(简化架构):
– OpenMetadata Server(Java Spring Boot)
– OpenMetadata UI(React + TypeScript)
– MySQL(持久化)
– Elasticsearch(搜索 + 索引)
2. Step 1:部署 OpenMetadata(10 分钟)
2.1 克隆仓库
git clone https://github.com/open-metadata/OpenMetadata.git
cd OpenMetadata
2.2 一键 Docker Compose 部署
cd docker/local-metadata
docker compose up -d
2.3 等待启动(3-5 分钟)
# 查看日志
docker compose logs -f openmetadata-server
# 等待看到 "Server initialized"
2.4 访问 Web UI
打开 http://localhost:8585,看到登录页:
默认账号:admin@openmetadata.org
默认密码:admin
首次登录会强制改密码。
2.5 健康检查
# 健康 API
curl http://localhost:8585/api/v1/system/health
# 预期
{"status":"ok"}
3. Step 2:接入数据源(10 分钟)
OpenMetadata 130+ 连接器覆盖:
| 类别 | 代表 |
|---|---|
| 数据库 | MySQL / PostgreSQL / Snowflake / BigQuery / Databricks |
| 数仓 | Redshift / ClickHouse / Trino |
| BI 工具 | Tableau / Power BI / Looker / Superset |
| 编排 | Airflow / Dagster / Prefect |
| 消息 | Kafka / Pulsar |
| ML 平台 | Sagemaker / MLflow / Databricks ML |
| 存储 | S3 / GCS / Azure Blob / HDFS |
| 监控 | Prometheus / Grafana |
3.1 通过 Web UI 接入(最简单)
- Settings → Services → Databases → Add New
- 选择类型(如 PostgreSQL)
- 填入:
- Name:
prod-postgres - Host:
localhost - Port:
5432 - Database:
orders - Username / Password
- 选 Schema 范围(默认
public) - 点击 Test Connection → Add
3.2 通过 YAML Ingestion(推荐生产)
# postgres-source.yaml
source:
type: postgres
serviceName: prod-postgres
serviceConnection:
config:
hostPort: localhost:5432
username: postgres
password: postgres
database: orders
sourceConfig:
config:
type: DatabaseMetadata
databaseFilterPattern:
includes:
- orders
- analytics
schemaFilterPattern:
includes:
- public
sink:
type: metadata-rest
config:
hostPort: http://localhost:8585/api
authProvider: openmetadata
securityConfig:
jwtToken: <bot-token>
workflowConfig:
openMetadataServerConfig:
hostPort: http://localhost:8585/api
authProvider: openmetadata
securityConfig:
jwtToken: <bot-token>
3.3 跑 Ingestion
# 安装 ingestion 库
pip install "openmetadata-ingestion[postgres]"
# 跑
metadata ingest -c postgres-source.yaml
3.4 验证
刷新 OpenMetadata Web UI,左侧栏 ”Explore” → “Tables” 应该看到所有 PostgreSQL 表。
4. Step 3:集成 OpenLineage 自动血缘(10 分钟)
OpenMetadata 原生支持 OpenLineage 事件——Spark/Airflow/dbt/Flink 自动发射的事件会被 OpenMetadata 接收。
4.1 配置 OpenLineage endpoint
Web UI:Settings → OpenMetadata → Services → Pipeline → Add New
Type: OpenLineage
Name: openlineage-events
Endpoint: http://your-app:5000/api/v1/lineage
4.2 在 Airflow 配置
export OPENLINEAGE_URL=http://localhost:5000
export OPENLINEAGE_NAMESPACE=production
# 指向 OpenMetadata 而不是 Marquez
export OPENLINEAGE_URL=http://openmetadata-pipeline:5000 # 自建 collector
或者用 OpenMetadata 自带的 OpenLineage collector:
docker run -d \
--name openmetadata-collector \
--network openmetadata \
openmetadata/collector:latest \
--openmetadata-url http://openmetadata-server:8585/api
4.3 验证血缘自动生成
跑完一个 DAG / Spark job 后,OpenMetadata Web UI:
– 打开任意 Table
– Lineage tab → 应该看到上下游节点
– 关系类型:Consumes / Produces
5. Step 4:启用 AI 原生能力(10 分钟)
这是 OpenMetadata 区别于其他 catalog 的硬能力。
5.1 MCP Server(让 AI Agent 直接查询)
OpenMetadata 自带 MCP Server,Claude / Cursor / OpenClaw 可以直接连:
# 启动 MCP server(Docker compose 一键)docker compose -f docker/mcp/docker-compose.yml up -d
配置 Claude Desktop:
{
"mcpServers": {
"openmetadata": {
"command": "npx",
"args": ["-y", "@openmetadata/mcp-server"],
"env": {
"OPENMETADATA_URL": "http://localhost:8585/api",
"OPENMETADATA_JWT": "<bot-token>"
}
}
}
}
AI Agent 现在能直接问:
" 我应该用 orders.public.daily_orders 还是 events.public.user_events 来算 MAU?"
"lineage 上看 daily_orders 的上游是什么?"
" 列出所有 tag 是 PII 的列。"
" 这个 dataset 有 test suite 吗?通过率多少?"
5.2 AI SDK(编程访问)
from metadata.sdk import OpenMetadata
client = OpenMetadata(
host="http://localhost:8585/api",
jwt_token="<bot-token>"
)
# 查 dataset
dataset = client.datasets.get_by_name("orders.public.daily_orders", fields=["*"])
print(f"Columns: {[c.name for c in dataset.columns]}")
print(f"Owner: {dataset.owner.display_name}")
print(f"Tags: {[t.tag_label.tag_fqn for t in dataset.tags]}")
5.3 Context Center(AI + 人类的知识中心)
OpenMetadata 内置 Context Center:
– 文档 (Articles)
– 决策记录 (Decisions)
– 假设 (Assumptions)
– 反馈循环
AI Agent 可以:
– 问 ” 为什么 daily_orders 用 sum 而不是 avg?”
– 问 ” 上次 P0 故障的决策是什么?”
6. 数据契约(ODCS)—— OpenMetadata 独家
OpenMetadata 支持 Open Data Contract Standard (ODCS)——Soda Core 是 YAML-only,OpenMetadata 是可视化 + YAML。
6.1 在 UI 创建契约
Settings → Data Contracts → Add New
填入:
– Name:
orders_daily_contract
– Schema: 选择 dataset
– Quality Expectations: 定义 SLA
– Terms of Use: 业务条款
6.2 YAML 导出
# orders_daily_contract.yaml
version: 1.0.0
kind: DataContract
metadata:
name: orders_daily_contract
dataset: orders.public.daily_orders
description: Daily aggregated orders data contract
spec:
schema:
- name: order_id
type: bigint
constraints: [not_null, unique]
- name: amount
type: decimal(10,2)
constraints: [not_null]
- name: created_at
type: timestamp
quality:
- type: columnValuesToNotBeNull
column: order_id
- type: columnValuesToBeBetween
column: amount
min: 0
max: 1000000
freshness:
maxDelay: P1D # 1 天
ownership:
team: data-eng
contact: data-eng@company.com
6.3 SLA 监控
OpenMetadata 自动监控契约违反,触发通知。
7. 数据质量(Quality)
7.1 内置 Test Suite
# test_suite.yaml
testSuite:
name: orders_daily_tests
tests:
- name: row_count_check
type: tableRowCountToBeBetween
params: {min: 1000, max: 1000000}
- name: null_check
type: columnValuesToNotBeNull
column: order_id
- name: uniqueness_check
type: columnValuesToBeUnique
column: order_id
7.2 跑 + 报警
Web UI → Quality → Test Suites → Run
通过 / 失败 / 通过率可视化。
8. 实战场景(飞熊技术咨询变现)
场景 1:客户第一次见面 Demo
30 分钟完成:
docker compose up -d(10 分钟)- 接入客户 1-2 个 PostgreSQL / Snowflake(10 分钟)
- 跑 OpenLineage collector + Airflow DAG(5 分钟)
- 展示 lineage graph + glossary + AI Agent 问答(5 分钟)
客户看到:
– 所有数据资产
– 自动血缘图
– 数据质量分数
– AI Agent 直接查询元数据
场景 2:AI Agent 项目
作为 AI Agent 的 ” 记忆中枢 ”:
AI Agent
↓ MCP / AI SDK
OpenMetadata
↓ 13.5K 社区共享连接器
Snowflake / PostgreSQL / dbt / Airflow
Agent 知道:
– 哪些数据集可信(quality > 95%)
– 哪些列带 PII(不直接查询)
– 哪些 dataset 有契约(业务规则)
场景 3:合规 + AI(金融 / 医疗)
- 数据分类 + Tag(OpenMetadata 的 Tag + Glossary)
- 访问控制 + 审计日志
- 数据契约 SLA
- AI Agent 上下文(避免 AI 直接读 PII)
9. 生产考虑
9.1 Kubernetes 部署
helm repo add openmetadata https://helm.open-metadata.org/
helm install openmetadata openmetadata/openmetadata \
--set global.database.host=postgres \
--set global.search.host=elasticsearch
9.2 性能
| 组件 | 默认 | 生产 |
|---|---|---|
| Server 内存 | 4 GB | 8 GB+ |
| JVM Heap | 2 GB | 4 GB |
| MySQL | 2 GB | 8 GB+ |
| Elasticsearch | 2 GB | 8 GB+ |
| 数据资产上限 | 100K | 1M+ |
9.3 安全
# application.yaml
authentication:
provider: ldap
ldap:
host: ldap://ldap.company.com
port: 389
basedn: dc=company,dc=com
authorisation:
provider: openmetadata
policies:
- name: PII-Access
rules:
- resource: column
filter: tags.tag_label.tag_fqn=PII.*
effect: deny
principals: [data-analyst]
9.4 灾备
# MySQL 备份
docker exec openmetadata-mysql mysqldump -u root -p openmetadata_db > backup.sql
# 恢复
cat backup.sql | docker exec -i openmetadata-mysql mysql -u root -p openmetadata_db
10. 30 分钟落地清单
- []
git clone OpenMetadata(1 分钟) - []
cd docker/local-metadata && docker compose up -d(10 分钟) - []
open http://localhost:8585改密码(2 分钟) - [] 接入 1-2 个 PostgreSQL(10 分钟)
- [] 配置 OpenLineage collector(5 分钟)
- [] 启动 MCP server(2 分钟)
总计 30 分钟,完整 OpenMetadata 上线。
11. 总结
11.1 OpenMetadata 实战核心步骤
| 步骤 | 耗时 | 关键命令 |
|---|---|---|
| 1. Docker 部署 | 10 分钟 | docker compose up -d |
| 2. 接数据源 | 10 分钟 | Web UI 或 YAML ingestion |
| 3. OpenLineage 血缘 | 10 分钟 | collector + Airflow/Spark |
| 4. AI 集成 | 10 分钟 | MCP Server + AI SDK |
11.2 实战价值
- ✅ 一站式 —— 4 大能力开箱即用
- ✅ AI 原生 —— MCP Server + AI SDK 是当下最强差异化
- ✅ 130+ 连接器 —— 客户现有栈几乎都能接
- ✅ Apache-2.0 + LF 候选 —— 法务友好
11.3 飞熊技术咨询定位
如果用 OpenMetadata 做 数据治理技术咨询:
| 卖点 | 内容 |
|---|---|
| AI 时代 | “AI Agent 直接问你的数据,30 分钟接好 ” |
| 一站式 | “catalog + 血缘 + 质量 + 契约,一个平台搞定 ” |
| 客户亲民 | “Apache-2.0 + LF 候选,法务零风险 ” |
| 变现路径 | 实施 5 万 + 年订阅 2 万 + AI 集成 3 万 |
📎 参考
- GitHub: open-metadata/OpenMetadata
- 官网: open-metadata.org
- 文档: docs.open-metadata.org
- 已有 WP: 《OpenMetadata 调研》 · 《数据治理横评》 · 《OpenLineage + Marquez 实战》
本文数据基准 2026-08-17(GitHub API + 官网实时抓取)。如需引用: [《OpenMetadata 实战》](https://east196.cn/?p=365)