Marquez 调研:OpenLineage 官方参考后端,2,259 ⭐ 的纯血缘图可视化神器

42次阅读
Marquez 调研:OpenLineage 官方参考后端,2,259 ⭐ 的纯血缘图可视化神器

飞熊深度向 · 数据更新于 2026-08-17 · 一句话理解:Marquez 是 OpenLineage 标准的官方参考实现——一个 PostgreSQL + Java 17 的纯血缘后端,提供 REST + GraphQL API + Web UI。它 不做 catalog、不做质量、只做一件事:把 OpenLineage 事件变成可视化的 lineage graph


1. 为什么需要 ” 参考实现 ”

OpenLineage 定义了血缘事件 schema(spec + Facet),但只发事件不够——总得有人接事件、存起来、画图。

这就是 Marquez 的角色:OpenLineage 的官方参考后端。它:

  • 接收 OpenLineage 事件(HTTP/Kafka)
  • 存到 PostgreSQL
  • 提供 REST + GraphQL API 查询
  • 提供 Web UI 可视化血缘图
  • 提供 admin API + 健康检查 + Prometheus metrics

LF AI & Data Foundation 已正式接纳为 Graduated 项目(注意:Marquez 比 OpenLineage 更早毕业)—— 由 WeWork 开源贡献给基金会。


2. 关键数据(2026-08-17 GitHub API 实时)

维度 数值
Stars 2,259
Forks 408
Open Issues 249
License Apache-2.0
首次提交 2018-07(WeWork 内部项目)
公开开源 2021(加入 LF AI & Data)
出身 WeWork(2017 内部项目,2018 开 repo,2021 加入 LF AI)
当前版本 Marquez 0.50.0 / OpenLineage 2-0-2(2024-10-23)
最近 commit 2026-08-11
架构栈 Java 17 + PostgreSQL 14 + TypeScript (Web UI)
LF 状态 Graduated(2023 年,比 OpenLineage 早毕业)

OpenLineage org 下与 Marquez 并列——两个项目同属 LF AI & Data 治理,一起毕业,一起演化。


3. Marquez 是什么:4 模块架构

┌──────────────────────────────────────────────┐
│  Marquez Repository (monorepo)               │
├──────────────────────────────────────────────┤
│                                              │
│  api/    ─→ Java 17 REST API + OpenLineage 接 │
│            收端 + PostgreSQL 持久化           │
│                                              │
│  web/    ─→ TypeScript Web UI(端口 3000)│
│            提供 lineage graph 可视化           │
│                                              │
│  clients/ ─→ 多语言客户端(Python / etc.)│
│            实现 HTTP API 封装                  │
│                                              │
│  chart/  ─→ Helm Chart(K8s 部署)│
│                                              │
└──────────────────────────────────────────────┘

3.1 API 模块(核心)

核心职责
– 监听 OpenLineage 事件(HTTP POST /api/v1/lineage)
– 解析事件,写入 PostgreSQL
– 提供查询 API(namespace/job/run/dataset/event)
– 提供 admin API(healthcheck、metrics)

端口分配

5000 —— 业务 HTTP API

5001 —— Admin API(健康检查、Prometheus metrics)
– MacOS 用户注意:5000 已被 AirPlay 占用,需要
--api-port 9000 改端口

3.2 Web 模块(可视化)

核心功能
– 血缘图(Lineage Graph)—— 展示 job 与 dataset 之间的输入输出关系
– Namespace / Job / Dataset / Run 详情页
– 作业执行历史
– 性能 metrics 展示

端口 3000,打开 http://localhost:3000 即可探索。

3.3 Clients 模块

提供多语言 HTTP API 封装:

  • Python 客户端(最常用)
  • 其他语言按需扩展

3.4 Chart 模块

Helm Chart,提供 K8s 一键部署。


4. 核心数据模型

Marquez 的数据模型 完全对齐 OpenLineage,因为它就是 OpenLineage 事件的接收端:

4.1 Namespace

{
  "namespace": {
    "name": "production",
    "currentSource": {
      "type": "POSTGRESQL",
      "name": "postgres://prod",
      "connectionUrl": "jdbc:postgresql://..."
    },
    "description": "Production data sources",
    "owners": [{"name": "data-team"}],
    "tags": ["production", "pci"]
  }
}

Namespace = 数据源命名空间(如 productionstaging),是 Marquez 顶层组织单位。

4.2 Job

{
  "job": {
    "namespace": "production",
    "name": "etl_orders.daily",
    "type": "BATCH",
    "inputs": [{ "namespace": "production", "name": "raw.orders"}
    ],
    "outputs": [{ "namespace": "production", "name": "analytics.daily_orders"}
    ],
    "location": "https://github.com/company/airflow-dags/blob/main/etl_orders.py",
    "description": "Daily ETL pipeline",
    "owners": [{"name": "data-eng"}]
  }
}

Job = 一个调度单元(如一个 Airflow DAG / Spark 任务 / dbt model),记录它消费什么、生产什么。

4.3 Run

{
  "run": {
    "id": "abc-123-def",
    "namespace": "production",
    "name": "etl_orders.daily",
    "state": "COMPLETED",
    "startedAt": "2026-08-17T01:00:00Z",
    "endedAt": "2026-08-17T01:05:00Z",
    "durationMs": 300000
  }
}

Run = Job 的一个具体运行,记录状态、耗时、参数。

4.4 Dataset

{
  "dataset": {
    "namespace": "production",
    "name": "analytics.daily_orders",
    "type": "DB_TABLE",
    "physicalName": "analytics.daily_orders",
    "description": "Daily aggregated orders",
    "columns": [{ "name": "order_id", "type": "BIGINT"},
      {"name": "amount", "type": "NUMERIC"},
      {"name": "created_at", "type": "TIMESTAMP"}
    ],
    "tags": ["analytics", "gold"],
    "lastModifiedAt": "2026-08-17T01:05:00Z"
  }
}

Dataset = 一份数据,记录 schema、tag、最后修改时间。

4.5 Event(OpenLineage 标准)

{
  "eventType": "COMPLETE",
  "eventTime": "2026-08-17T01:05:00Z",
  "run": {"runId": "abc-123"},
  "job": {"namespace": "...", "name": "..."},
  "inputs": [...],
  "outputs": [...],
  "producer": "airflow",
  "schemaURL": "https://openlineage.io/spec/2-0-2/OpenLineage.json"
}

Event = OpenLineage 事件的 payload,Marquez 原样接收并解析。


5. Web UI 三大核心视图

5.1 Lineage Graph(血缘图)

打开 Web UI 主界面,默认是 lineage graph 视图,展示:

节点:Job(蓝色)+ Dataset(绿色)

:consumes / produces 关系

过滤:可按 namespace / tag 过滤

适合 快速理解数据流的来龙去脉

5.2 Job Detail(任务详情)

点击任一 Job,进入详情页:
– 基本信息(namespace / name / type / owners)
– 输入输出 datasets
– 运行历史(runs)
– 最新一次 run 的状态、耗时、参数

适合 排查具体任务的执行问题

5.3 Dataset Detail(数据集详情)

点击任一 Dataset,进入详情页:
– 基本信息(type / physicalName / schema)
– 上下游 jobs
– tag / description / owners
– 列级 schema(Marquez 通过 OpenLineage columnLineage facet 支持)

适合 理解数据集的来源和使用


6. 与 DataHub / OpenMetadata / Atlas 对比

维度 Marquez DataHub OpenMetadata Atlas
核心定位 纯血缘后端 一站式 catalog 一站式 + AI Hadoop 元数据
Stars 2,259 ⭐ 12,534 ⭐ 14,891 ⭐ 2,132 ⭐
License Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅
LF 状态 Graduated 独立 +LinkedIn LF 候选 Apache 顶级
血缘 ✅ 表 + 列级 ✅ 表 + 列级 ✅ 表 + 列级 ✅ 表级
元数据
数据质量 ⚠️ 弱
数据契约 ⚠️ ✅ ODCS
AI 上下文 ✅ MCP ✅ MCP
架构 Java + PG Java + Kafka Java + ES Java + HBase + Solr
OpenLineage 集成 官方参考 ✅ 消费事件 ✅ 消费事件 ⚠️ 自家
部署复杂度 🟢 极简 🟡 中等 🟡 中等 🔴 重

6.1 互补关系

Marquez + 其他 catalog

Pipeline Tools (Spark/Airflow/dbt) 
    ↓ 发射 OpenLineage 事件
OpenLineage 标准
    ↓ 
双路:① Marquez(纯血缘视图)+ ② DataHub/OpenMetadata(一站式)

关键洞察 :Marquez 不是 DataHub 的替代品, 它是 DataHub 的简化版替代。当团队只需要血缘图、不需要 catalog/ 质量 /AI 上下文时,Marquez 是更轻量的选择。


7. 部署模式

7.1 Docker Compose(开发)

git clone https://github.com/MarquezProject/marquez
cd marquez
./docker/up.sh
# Web UI: http://localhost:3000
# HTTP API: http://localhost:5000
# Admin: http://localhost:5001

7.2 完整集成(Marque + OpenLineage Airflow)

# 1. 启动 Marquez
./docker/up.sh

# 2. 配置 Airflow 发射 OpenLineage 事件
export OPENLINEAGE_URL=http://localhost:5000
export OPENLINEAGE_API_KEY=***
export OPENLINEAGE_NAMESPACE=production

# 3. Airflow 启动后,Marquez 自动接收事件

7.3 Kubernetes(生产)

helm repo add marquez https://marquezproject.github.io/marquez
helm install marquez marquez/marquez \
  --set postgresql.auth.password=secret \
  --namespace marquez --create-namespace

7.4 启动选项

# 使用 --build 从源码构建
./docker/up.sh --build

# 使用 --seed 注入样例数据
./docker/up.sh --seed

# MacOS 用户改端口
./docker/up.sh --api-port 9000

8. 版本兼容策略

Marquez 与 OpenLineage 是 独立版本号但严格兼容

Marquez 版本 OpenLineage Spec 状态
UNRELEASED 2-0-2 CURRENT(开发中)
0.50.0(2024-10-23) 2-0-2 RECOMMENDED
0.49.0(2024-08-07) 2-0-2 MAINTENANCE

兼容性保证
– Marquez 向后兼容 OpenLineage spec
– 旧 spec 版本的事件也能被新 Marquez 接收

openlineage-python / openlineage-java 客户端库版本可以比 spec 高


9. 实战 3 步:用 Marquez 收集 Airflow 血缘

Step 1: 启动 Marquez

cd marquez && ./docker/up.sh --seed
# seed 模式会注入样例数据集,方便探索 UI

Step 2: 配置 Airflow

pip install openlineage-airflow
export OPENLINEAGE_URL=http://marquez:5000
export OPENLINEAGE_API_KEY=***
export OPENLINEAGE_NAMESPACE=production

或者在 Airflow config:

[openlineage]
transport = {
  "type": "http",
  "url": "http://marquez:5000",
  "auth": {"type": "api_key", "api_key": "***"}
}

Step 3: 验证

打开 http://localhost:3000,查看 lineage graph 自动生成。


10. 总结:飞熊为什么关心 Marquez

10.1 关键事实

  1. Apache-2.0 + LF AI & Data Graduated —— 比 OpenLineage 早毕业
  2. WeWork 出身(2017 内部项目 → 2021 开源 → 2023 LF 毕业)
  3. 纯血缘后端——不做 catalog、不做质量、只做血缘可视化
  4. Java 17 + PostgreSQL 14 —— 架构简单,部署门槛低
  5. OpenLineage 官方参考实现——所有 OpenLineage 集成(Spark/dbt/Airflow/Flink)都开箱即用

10.2 选型决策

痛点 首选 备选
只要血缘图,不要 catalog Marquez DataHub
要 catalog + 血缘 + 质量 DataHub + OpenLineage OpenMetadata + OpenLineage
已经有 DataHub DataHub + OpenLineage
已经有 OpenMetadata OpenMetadata + OpenLineage
Hadoop 老仓库 Apache Atlas
K8s 生产部署 Marquez + Helm Chart Docker Compose

10.3 License

项目 License 商用风险
Marquez Apache-2.0 ✅ 无风险

飞熊专属观察 :Marquez 是数据治理赛道 最轻量的 Apache-2.0 血缘后端。如果你不想上 DataHub/OpenMetadata 的重量级 catalog,Marquez 是最干净的 ” 血缘图可视化 ” 选择。


📎 参考


本文数据基准 2026-08-17(GitHub API + 官网 + LF AI & Data 官网实时抓取)。如需引用: [《Marquez 调研》](https://east196.cn/?p=361)

正文完