
飞熊深度向 · 数据更新于 2026-08-17 · 一句话理解:Apache Atlas 是 Hadoop 生态的元数据治理鼻祖——诞生于 2015 年 Hortonworks 联合发起,比 OpenMetadata/DataHub 早 4-6 年。它 不只是一个 catalog,还自带 Classification(标签传播)、Lineage(血缘)、Security(RBAC + ABAC 与 Apache Ranger 集成) 三件套。新项目优先考虑 OpenMetadata / DataHub,但 Hadoop 老仓库 Atlas 仍是无可替代的选项。
1. 为什么 Atlas 仍是 Hadoop 生态标准
2015 年 Hortonworks 联合多家厂商发起了 Data Governance Initiative,提出四个核心需求:
- 元数据集中管理 —— Hive / HBase / Sqoop / Storm / Kafka 各有元数据存储,需要统一
- 数据分类 (Classification) —— PII、敏感数据、过期时间需要打标签
- 数据血缘 (Lineage) —— 跨 Hive/Spark/Storm 任务的真实血缘
- 安全与策略 —— Apache Ranger 集成,按标签 + 角色做访问控制
Apache Atlas 是这个 Initiative 的 开源实现。9 年过去,它仍是:
- Apache 顶级项目(Apache Top-Level)
- Hadoop 生态事实标准 —— Cloudera/HDP/CDH 发行版默认带
- 2,132 ⭐ / 902 forks —— Hadoop 圈共识
但增长放缓 :9 年只到 2.1K ⭐,远低于 OpenMetadata 14.9K / DataHub 12.5K。原因: 新项目优先选云原生(OpenMetadata/DataHub),不再依赖 Hadoop 生态。
2. 关键数据(2026-08-17 GitHub API 实时)
| 维度 | 数值 |
|---|---|
| Stars | 2,132 ⭐ |
| Forks | 902 |
| Open Issues | 147 |
| License | Apache-2.0 ✅ |
| 首次提交 | 2017-07(apache org) |
| 出身 | Hortonworks 2015 年 Data Governance Initiative |
| Apache 状态 | Top-Level Project |
| 最近 commit | 2026-08-13 |
| 架构栈 | Java 8/11/17 + HBase + Solr(经典 Hadoop 组件) |
| 代码体量 | Java 15.5M + TypeScript 4.9M + JS 2.8M + Python 478K |
Apache Atlas 是数据治理赛道 Java 体量最大的项目(15.5M,远超 OpenMetadata 的 4.4M Java)。这是因为它跑在 HBase(Java)和 Solr(Java)上。
3. Atlas 是什么:5 层架构
┌──────────────────────────────────────────────┐
│ Applications(应用层)│
│ Atlas UI · REST API · Java/Python SDK │
├──────────────────────────────────────────────┤
│ Integration(集成层)│
│ Hive Hook · Spark Hook · Sqoop Hook │
│ Storm Hook · Falcon Hook · Kafka Hook │
├──────────────────────────────────────────────┤
│ Core(核心层)│
│ Type System · Classification · Lineage │
│ Business Metadata · Search DSL │
├──────────────────────────────────────────────┤
│ Metadata Sources(元数据源层)│
│ Hive Metastore · HBase · Sqoop · Storm │
│ Kafka · Falcon · HDFS │
├──────────────────────────────────────────────┤
│ Storage(存储层)│
│ HBase(图存储)· Solr(索引)· Kafka(事件)│
└──────────────────────────────────────────────┘
5 层设计说明:
- 存储层 —— 用 HBase 存图、Solr 建索引、Kafka 做事件
- 元数据源层 —— 接 Hive/HBase/Sqoop/Storm/Kafka/Falcon/HDFS
- 核心层 —— Type System / Classification / Lineage
- 集成层 —— 各数据源的 Hook 自动捕获元数据
- 应用层 —— Web UI + REST API + SDK
4. 四大核心概念
4.1 Type System(类型系统)
{
"entityDefs": [{
"category": "ENTITY",
"name": "hive_table",
"attributeDefs": [{ "name": "owner", "typeName": "string"},
{"name": "createTime", "typeName": "date"},
{"name": "lastAccessTime", "typeName": "date"},
{"name": "columns", "typeName": "array<hive_column>"}
],
"superTypes": ["DataSet"]
}]
}
Type System 是 Atlas 的核心抽象:
- 定义元数据模型(entity + attribute + relationship)
- 支持 Hadoop / 非 Hadoop 元数据预定义类型
- 允许用户自定义新类型
- 支持继承(superTypes)
预定义类型 包含:hive_db / hive_table / hive_column / hive_process / hdfs_path 等。
4.2 Classification(分类 / 标签)
{
"classificationDefs": [{
"category": "CLASSIFICATION",
"name": "PII",
"description": "Personally Identifiable Information",
"attributeDefs": [{ "name": "expiry_date", "typeName": "date"}
]
}, {
"name": "SENSITIVE",
"description": "Sensitive data"
}, {
"name": "DATA_QUALITY",
"description": "Data quality score"
}, {
"name": "EXPIRES_ON",
"description": "Auto-expire after this date"
}]
}
Classification 是 Atlas 的差异化亮点:
- 内置标签:PII / SENSITIVE / DATA_QUALITY / EXPIRES_ON
- 通过 lineage 自动传播 —— 如果 Hive 表有 PII 标签,导出到 HDFS 文件会自动带 PII
- 与 Apache Ranger 联动 —— 按标签 + 角色做行 / 列级 masking
这是 OpenMetadata/DataHub 没有的硬能力。
4.3 Lineage(血缘)
{
"relationshipDefs": [{
"category": "RELATIONSHIP",
"name": "hive_process_to_target_table",
"endDef1": {"typeName": "hive_process"},
"endDef2": {"typeName": "hive_table"},
"label": "output"
}]
}
Lineage 记录数据流向:
- Hive process 输入 → 输出 table
- Sqoop 关系数据库导入
- Storm 流处理
- HDFS 文件血缘
限制:表级血缘,无列级(OpenMetadata/DataHub 已经支持列级)
4.4 Search DSL(搜索)
hive_table where owner = "data-team" and createTime > "2025-01-01"
类似 SQL 的 DSL,可按类型 + 分类 + 属性值搜索。
5. 集成矩阵(Hadoop 生态全覆盖)
| 数据源 | Bridge / Hook | 状态 |
|---|---|---|
| Hive | hive-bridge + hive-hook | ✅ 完整 |
| HBase | hbase-bridge | ✅ |
| Sqoop | sqoop-bridge | ✅ |
| Storm | storm-bridge + storm-hook | ✅ |
| Falcon | falcon-bridge | ✅ |
| Kafka | kafka-bridge | ✅ |
| HDFS | hdfs-bridge | ✅ |
| Spark | ⚠️ 无官方 hook | ⚠️ 需 spline/spark-atlas-connector |
| Flink | ⚠️ 无官方 hook | ⚠️ |
关键洞察:Atlas 在 Hive/HBase/Sqoop/Storm 老 Hadoop 圈 无可替代,但在 Spark/Flink 新圈 缺位——这是新项目优先选 OpenMetadata/DataHub 的根本原因。
6. 跟新代对比
| 维度 | Apache Atlas | OpenMetadata | DataHub |
|---|---|---|---|
| 核心定位 | Hadoop 元数据 + 分类 + 血缘 | Open Context Layer | Context Platform |
| Stars | 2,132 ⭐ | 14,891 ⭐ | 12,534 ⭐ |
| License | Apache-2.0 ✅ | Apache-2.0 ✅ | Apache-2.0 ✅ |
| 治理状态 | Apache 顶级 | LF 候选 | 独立 +LinkedIn |
| 年龄 | 9 年(2017) | 5 年(2021) | 11 年(2015) |
| 架构 | Java + HBase + Solr | Java + TS + Python | Java + Kafka + Python |
| Java 体量 | 15.5M(最大) | 4.4M | 多仓 |
| 列级血缘 | ❌ | ✅ | ✅ |
| 数据契约 | ❌ | ✅ ODCS | ⚠️ 弱 |
| AI 上下文 | ❌ | ✅ MCP | ✅ MCP |
| Hadoop 生态 | ✅ 不可替代 | ⚠️ 弱 | ⚠️ 弱 |
| 云原生 | ⚠️ 弱 | ✅ 原生 | ✅ 原生 |
| Classification | ✅ PII / SENSITIVE + 标签传播 | ⚠️ Tags | ⚠️ Tags |
| Ranger 集成 | ✅ | ⚠️ | ⚠️ |
6.1 互补关系
Atlas 与 OpenMetadata/DataHub 不是替代关系:
- Atlas 适合 Hadoop 生态老仓库(Hive/HBase/Sqoop/Storm)
- OpenMetadata / DataHub 适合云原生(Snowflake/BigQuery/Databricks/dbt)
典型组合:
Hive/HBase 老仓库 → Apache Atlas + Ranger(治理 + 分类)Snowflake/BigQuery 新仓库 → OpenMetadata + DataHub + OpenLineage
6.2 Atlas 仍是唯一有 ” 标签传播 ” 的
这是 Atlas 不可替代的硬能力:
- 一个表标记 PII → 它的下游所有产物自动带 PII
- 与 Apache Ranger 联动 → 行 / 列级自动 masking
- OpenMetadata / DataHub 只有 Tag,没有 lineage-driven propagation
如果你的核心需求是合规 + 数据分类,Atlas + Ranger 是首选组合。
7. 部署模式
7.1 Docker(开发)
git clone https://github.com/apache/atlas
cd atlas
docker compose up -d
# Web UI: http://localhost:21000
# 默认账号: admin/admin
7.2 HDP/CDH 发行版(生产)
Atlas 集成在 HDP 3.x 和 CDH 6.x:
- Cloudera Manager 一键部署
- Ambari 配置 Atlas Service
- 自动集成 Hive/Sqoop/Storm/HBase
7.3 从源码构建(自定义)
# 需求:Java 8/11/17 + Maven
export MAVEN_OPTS="-Xms2g -Xmx2g"
mvn clean install
mvn clean package -Pdist
# 产物:distro/target/apache-atlas-{version}-bin.tar.gz
distro/target/apache-atlas-{version}-{hive|hbase|storm|sqoop}-hook.tar.gz
7.4 端口
| 组件 | 默认端口 |
|---|---|
| Web UI | 21000 |
| REST API | 21000(同端口) |
| Admin API | 21000(同端口) |
8. 实战:Hive 表自动捕获 + PII 标签
Step 1: 启动 Atlas + Hive Hook
# atlas 安装时勾选 hive-bridge + hive-hook
# 在 hive-site.xml 添加:<property>
<name>hive.exec.post.hooks</name>
<value>org.apache.atlas.hive.hook.HiveHook</value>
</property>
Step 2: 给敏感表加 PII 标签
curl -u admin:admin -X POST \
-H "Content-Type: application/json" \
-d '[{
"typeName": "PII",
"entityGuids": ["-7b1f7e22-...-..."],
"propagate": true
}]' \
"http://localhost:21000/api/atlas/entities/classification"
Step 3: Ranger 自动屏蔽 PII 列
在 Ranger 配置按标签的 policy:
<policy>
<name>PII masking</name>
<resources>
<tag>PII</tag>
</resources>
<policyItems>
<accesses>
<type>select</type>
</accesses>
<groups>data-analyst</groups>
<rowFilter>last_4_digits</rowFilter>
</policyItems>
</policy>
结果 :所有被标记 PII 的列,自动按 Ranger policy 做 masking, 无需逐个表配置。
9. 总结:飞熊为什么关心 Atlas
9.1 关键事实
- Apache 顶级项目 + Apache-2.0 ✅ —— 顶级基金会背书
- 2015 年 Hortonworks 发起——Hadoop 圈元数据治理鼻祖
- 9 年老炮,2,132 ⭐ —— 增长放缓但仍是 Hadoop 标准
- Java 15.5M —— 数据治理赛道 Java 体量最大
- Classification + 标签传播 —— OpenMetadata/DataHub 没有的硬能力
9.2 选型决策
| 痛点 | 首选 | 备选 |
|---|---|---|
| Hadoop 老仓库(Hive/HBase/Sqoop) | Apache Atlas + Ranger | 无替代 |
| 新云原生(Snowflake/BigQuery) | OpenMetadata | DataHub |
| 合规 + PII + 自动 masking | Atlas + Ranger | 无替代 |
| AI Agent 上下文 | OpenMetadata | DataHub |
| 跨云血缘 | OpenLineage + Marquez | DataHub |
9.3 飞熊的 3 个应用场景
场景 1:传统银行 / 保险 Hadoop 数仓
– Hive 表几千张 + PII 合规要求
– Atlas + Ranger 自动 PII 标记 + 行 / 列 masking
–
唯一选择
场景 2:云原生数据湖
– Snowflake + dbt + Databricks
– OpenMetadata + OpenLineage
– Atlas 不是首选
场景 3:混合架构
– Hadoop 老仓库 → Atlas
– 云原生新仓库 → OpenMetadata
– OpenLineage 联通两边
9.4 License
| 项目 | License | 商用风险 |
|---|---|---|
| Apache Atlas | Apache-2.0 | ✅ 无风险 |
| Apache Ranger | Apache-2.0 | ✅ 无风险 |
飞熊专属观察 :双 Apache-2.0 + Apache 顶级 = 数据治理赛道 最硬的合规方案 。如果你接到金融 / 医疗 / 政府的 Hadoop 治理项目,Atlas + Ranger 是 标准答案。
📎 参考
- GitHub: apache/atlas
- 官网: atlas.apache.org
- 文档: atlas.apache.org/#/Documentation
- 已有 WP 调研: 《数据治理横评》 · 《OpenLineage 调研》 · 《Marquez 调研》 · 《OpenMetadata 调研》 · 《DataHub 调研》
本文数据基准 2026-08-17(GitHub API 实时 + Apache 官网 + 已发布横评上下文)。如需引用: [《Apache Atlas 调研》](https://east196.cn/?p=362)