DataHub 与 Amundsen 元数据平台
概述
DataHub 与 Amundsen 是现代元数据平台的代表:自动采集各数据源元数据,提供 Search(检索)、Lineage(血缘)、Glossary(术语表)能力。本文讲透两者的元数据采集、核心能力与开放 API,并给出对比与选型。
一、平台定位
| 平台 | 出身 | 定位 |
|---|---|---|
| DataHub | 全功能元数据平台 | |
| Amundsen | Lyft | 数据发现工具 |
共同目标:
找数据、理解数据、信任数据| 能力 | 说明 |
|---|---|
| 采集 | 多数据源 |
| 搜索 | 快速找表 |
| 血缘 | 数据流转 |
| 术语 | 口径统一 |
| API | 开放集成 |
二、元数据采集
2.1 采集源
| 数据源 | 说明 |
|---|---|
| Hive/Iceberg | 数仓/湖 |
| MySQL/PG | 关系库 |
| Kafka | 消息 |
| Spark/Flink | 作业血缘 |
| Airflow/Dolphin | 任务元数据 |
| 指标平台 | 指标定义 |
2.2 采集机制
DataHub:Ingestion(Sources → MCE)
Python/Java SDK
调度执行采集
Amundsen:Databuilder
提取 → 转换 → 加载
可编程扩展| 采集 | 说明 |
|---|---|
| 全量 | 定时全量 |
| 增量 | 变更采集 |
| 血缘 | 作业解析 |
| 指标 | 口径同步 |
2.3 采集质量
| 要点 | 说明 |
|---|---|
| 及时 | 定时刷新 |
| 完整 | 字段级 |
| 准确 | 与源一致 |
| 血缘 | 端到端 |
三、Search 检索
3.1 能力
| 能力 | 说明 |
|---|---|
| 全文搜索 | 表/字段/注释 |
| 过滤 | 类型/库/标签 |
| 排序 | 热度/相关度 |
| 高亮 | 命中定位 |
| 建议 | 搜索提示 |
搜索体验:
搜"订单"→ 相关表/字段/指标
看元数据 → 看血缘 → 使用3.2 元数据详情
表详情页:
结构(列/类型/注释)
分区/大小
血缘(上下游)
所有者/标签
使用统计四、Lineage 血缘
4.1 能力
| 血缘 | 说明 |
|---|---|
| 表级 | 表 → 表 |
| 字段级 | 列 → 列 |
| 作业级 | 任务 → 表 |
| 端到端 | 源 → 应用 |
4.2 采集
DataHub:从 Spark/Flink/Airflow 采集
任务输入输出 → 血缘
Amundsen:Databuilder 解析
SQL/作业元数据血缘价值:
影响分析(改表)
溯源(数据来源)
治理(依赖)五、Glossary 术语表
5.1 作用
统一业务口径:
指标定义(GMV 怎么算)
术语解释
与物理表关联| 要素 | 说明 |
|---|---|
| 术语 | 业务名词 |
| 定义 | 口径说明 |
| 关联 | 绑定表/字段 |
| 分类 | 领域组织 |
示例:
术语"GMV"→ 定义 + 关联 gmv 字段
业务查指标 → 看定义 → 找数据5.2 价值
口径统一:
避免歧义
指标可信
沟通效率六、开放 API
6.1 DataHub API
| 接口 | 说明 |
|---|---|
| GraphQL | 查询/变更 |
| REST | 实体操作 |
| Ingestion | 元数据上报 |
| Metadata Service | 核心服务 |
GraphQL 查询:
dataset(表)、lineage、glossary
可集成自研平台6.2 Amundsen API
| 接口 | 说明 |
|---|---|
| REST | 搜索/详情 |
| Databuilder | 采集管线 |
| Neo4j | 图存储 |
开放 API 价值:
嵌入自研数据平台
扩展治理能力七、DataHub vs Amundsen
| 维度 | DataHub | Amundsen |
|---|---|---|
| 血缘 | 强(多源) | 中 |
| 术语 | 内置 | 弱 |
| 采集 | 丰富 | Databuilder |
| 部署 | 组件多 | 轻量 |
| 生态 | 活跃 | 维护一般 |
| 集成 | GraphQL | REST |
| 场景 | 推荐 |
|---|---|
| 全功能治理 | DataHub |
| 轻量发现 | Amundsen |
| 血缘优先 | DataHub |
| 自研集成 | 两者皆可 |
选型建议:
DataHub 功能全、生态活
Amundsen 轻量简单
国内团队也常用 DataHub八、架构对比
8.1 DataHub 架构
Frontend(React)→ GMS(服务)
→ 存储(MySQL + ES + Kafka)
→ Ingestion(采集)| 组件 | 说明 |
|---|---|
| GMS | 元数据服务 |
| MAE/MCE | 事件通道 |
| ES | 搜索 |
| MySQL | 存储 |
8.2 Amundsen 架构
Frontend → Search(ES)+ Metadata(Neo4j)
→ Databuilder(采集)对比:
DataHub 事件驱动(Kafka)
Amundsen 直接写存储九、最佳实践
| 实践 | 说明 |
|---|---|
| 采集全覆盖 | 关键源先接 |
| 术语先行 | 口径统一 |
| 血缘核对 | 准确性 |
| 与平台集成 | 嵌入工作流 |
| 权限联动 | 安全 |
常见问题速查
| 问题 | 要点 |
|---|---|
| 两个平台是干嘛 | 元数据发现/治理 |
| 元数据怎么采 | Ingestion/Databuilder |
| Search 价值 | 找数据 |
| 血缘哪来 | 作业/SQL 解析 |
| Glossary | 口径统一 |
| 怎么选 | 全功能 DataHub |