OpenMetadata 实战:14K ⭐ 一站式 AI Context Layer 部署,4 步让客户看到数据全景图

51次阅读
OpenMetadata 实战:14K ⭐ 一站式 AI Context Layer 部署,4 步让客户看到数据全景图

飞熊实战向 · 数据更新于 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 接入(最简单)

  1. Settings → Services → Databases → Add New
  2. 选择类型(如 PostgreSQL)
  3. 填入:
  4. Name: prod-postgres
  5. Host: localhost
  6. Port: 5432
  7. Database: orders
  8. Username / Password
  9. 选 Schema 范围(默认 public
  10. 点击 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 分钟完成

  1. docker compose up -d(10 分钟)
  2. 接入客户 1-2 个 PostgreSQL / Snowflake(10 分钟)
  3. 跑 OpenLineage collector + Airflow DAG(5 分钟)
  4. 展示 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 万

📎 参考


本文数据基准 2026-08-17(GitHub API + 官网实时抓取)。如需引用: [《OpenMetadata 实战》](https://east196.cn/?p=365)

正文完