Apache Atlas 调研:Hadoop 生态元数据鼻祖,2,132 ⭐ 的 9 年 Apache 顶级项目

46次阅读
Apache Atlas 调研:Hadoop 生态元数据鼻祖,2,132 ⭐ 的 9 年 Apache 顶级项目

飞熊深度向 · 数据更新于 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,提出四个核心需求:

  1. 元数据集中管理 —— Hive / HBase / Sqoop / Storm / Kafka 各有元数据存储,需要统一
  2. 数据分类 (Classification) —— PII、敏感数据、过期时间需要打标签
  3. 数据血缘 (Lineage) —— 跨 Hive/Spark/Storm 任务的真实血缘
  4. 安全与策略 —— 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 层设计说明

  1. 存储层 —— 用 HBase 存图、Solr 建索引、Kafka 做事件
  2. 元数据源层 —— 接 Hive/HBase/Sqoop/Storm/Kafka/Falcon/HDFS
  3. 核心层 —— Type System / Classification / Lineage
  4. 集成层 —— 各数据源的 Hook 自动捕获元数据
  5. 应用层 —— 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 关键事实

  1. Apache 顶级项目 + Apache-2.0 ✅ —— 顶级基金会背书
  2. 2015 年 Hortonworks 发起——Hadoop 圈元数据治理鼻祖
  3. 9 年老炮,2,132 ⭐ —— 增长放缓但仍是 Hadoop 标准
  4. Java 15.5M —— 数据治理赛道 Java 体量最大
  5. 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 是 标准答案


📎 参考


本文数据基准 2026-08-17(GitHub API 实时 + Apache 官网 + 已发布横评上下文)。如需引用: [《Apache Atlas 调研》](https://east196.cn/?p=362)

正文完