每天认识一个组件:数据治理Apache Atlas

一、引言

Apache Atlas 最早出现在 Hadoop 生态的治理需求中,Hadoop 平台能够以低成本存储和处理大规模数据,但也带来了元数据分散、数据来源复杂、权限边界模糊和合规审计困难等问题。

问题 没有治理系统时的表现 Atlas 试图提供的能力
数据资产不可见 表很多,但不知道哪些重要、哪些废弃 数据目录、元数据搜索
表含义不清 技术表名难以对应业务语义 Glossary 业务术语
血缘不清 下游报表出错时难以追溯上游 表级、字段级血缘
敏感数据难管 不知道哪些字段是 PII、SENSITIVE Classification 分类标签
权限难联动 权限策略与数据语义脱节 与 Apache Ranger 联动
平台集成分散 Hive、Kafka、HBase 等各自维护元数据 Hook、Bridge、REST API、Kafka 通知

Apache Atlas正是为这类问题而生:它提供开放的元数据管理与数据治理能力,帮助组织建立数据资产目录、分类治理数据资产,并支持数据科学家、分析师和治理团队围绕数据资产协作。它的定位是面向 Hadoop 及企业数据生态的可扩展治理服务框架,用于支撑合规、元数据管理、数据分类、血缘、搜索发现和安全策略联动等场景。

Atlas 的价值可以概括为三句话:

  • 它把数据资产抽象成统一的元数据模型。
  • 它用图结构表达数据对象之间的关系。
  • 它把分类、血缘、搜索、术语和安全策略连接起来。

Atlas 扮演"元数据中枢"的角色:一边接入数据系统的技术元数据,一边为搜索、血缘、标签、安全策略和业务术语提供统一入口。

二、Atlas核心架构

Apache Atlas 不是一个单体 UI,而是由模型、存储、索引、API、消息、采集器和应用集成共同组成。整体架构包含几类核心模块:Core、Integration、Metadata Sources 和 Applications。

Atlas Core 中最关键的两个概念是 Type System 和 Graph Engine。Type System 用来定义元数据对象的模型,例如 Hive 表、Hive 列、数据库、进程、分类等;Graph Engine 则把这些类型和实体转换成底层图存储模型,并创建索引以支持搜索,Atlas 使用 JanusGraph 存储元数据对象 。

Integration 层提供两种集成方式:REST API 和基于 Kafka 的消息接口。REST API 用于创建、更新、删除、查询类型和实体;Kafka 通知则适合松耦合场景,Hook 可以把元数据变更写入 Kafka,Atlas 和下游系统也可以消费元数据事件 。

Metadata Sources 是 Atlas 的元数据来源,开箱集成包括 HBase、Hive、Sqoop、Storm、Kafka 等,这些集成包含两层含义:Atlas 定义了对应系统的元数据模型,也提供了摄取这些元数据对象的组件 。

三、类型系统

Atlas 的类型系统是理解它的入口,Atlas 中的模型称为types,类型的实例称为entities;也就是说,hive_table是一种类型,而某个具体的 Hive 表是一个实体。

scss 复制代码
Type Definition                  Entity Instance

hive_table                       default.customers@primary
+ name: string                   + guid: 9ba3...
+ db: hive_db                    + typeName: hive_table
+ owner: string                  + status: ACTIVE
+ columns: array<hive_column>    + attributes:
+ tableType: string                - name: customers
                                   - owner: admin
                                   - db: default

Atlas 的类型可以类比面向对象语言中的 Class,也可以类比关系数据库中的表结构。一个类型由属性集合组成,属性可以是 primitive、enum、array、map,也可以是 Entity、Struct、Classification、Relationship 等复合类型 。

Atlas 内置了一些系统类型,它们构成了数据治理模型的基础:

系统类型 含义 典型用途
Referenceable 可通过 qualifiedName 唯一搜索的实体 建立统一命名约定
Asset 资产基类,包含 name、description、owner 等属性 描述通用资产
Infrastructure 基础设施类元数据 集群、主机等
DataSet 表示存储数据的数据集 Hive 表、HBase 表等
Process 表示数据转换过程 ETL、SQL、计算任务、血缘过程

其中 DataSetProcess 对血缘非常关键。DataSet 可以参与数据转换,Processinputsoutputs 两个属性,用于描述一个转换过程如何把输入数据集变成输出数据集 。

lua 复制代码
+-------------+      +----------------+      +-------------+
| DataSet A   | ---> | Process / ETL   | ---> | DataSet B   |
| ods_order   |      | insert select   |      | dwd_order   |
+-------------+      +----------------+      +-------------+

这就是 Atlas 血缘模型的底层逻辑:不是简单记录"表 A 依赖表 B",而是把数据集和加工过程都建模成图中的节点,再用关系连接起来。

四、元数据采集

Atlas 支持通过 API 和消息机制写入元数据。REST API 是用户管理元数据的主要方式;Kafka 消息接口适合让 Hook 向 Atlas 发送元数据对象,也适合让下游应用消费 Atlas 的元数据变更事件 。

以 Hive 为例,Atlas Hive Hook 会注册到 Hive 中,监听 create、update、delete 等操作,并通过 Kafka 通知把 Hive 变化更新到 Atlas 。简要配置方式:在 hive-site.xml 中配置 hive.exec.post.hooks=org.apache.atlas.hive.hook.HiveHook,并把 Atlas Hook 相关 jar 加入 Hive 环境 。

Hive 元数据会被映射为hive_dbhive_tablehive_columnhive_processhive_column_lineage等类型;Hive 实体会使用qualifiedName去重,例如hive_table.qualifiedName的格式是<dbName>.<tableName>@<clusterName>

五、Atlas功能特性

Atlas 的核心功能可以理解为"元数据管理 + 数据治理应用"。

1.元数据建模

Atlas 允许用户使用预定义类型管理 Hadoop 和非 Hadoop 元数据,也支持自定义新类型;类型可以包含 primitive 属性、复杂属性、对象引用,并可以继承其他类型。这使得 Atlas 不局限于 Hive 表,也可以扩展到自研任务、指标、报表、数据产品、服务 API 等企业内部对象。

2.分类标签

Classification 是 Atlas 中非常重要的治理能力。Atlas 支持动态创建分类,例如PIIEXPIRES_ONDATA_QUALITYSENSITIVE;分类可以带属性,例如EXPIRES_ON可包含expiry_date;实体可以关联多个分类,分类还可以通过血缘传播。

这意味着,如果上游字段被标记为敏感数据,下游衍生字段可以继承相应分类。这个能力对合规、安全和数据发现都很关键,但在生产环境中通常需要配合清晰的标签体系、字段级血缘质量和安全策略系统一起使用。

3.数据血缘

Atlas 提供 UI 查看数据在处理过程中的流转,也提供 REST API 访问和更新血缘。在 Hive 场景中,Atlas 可以捕获 create table as select、insert 等操作,并支持字段级血缘,字段级血缘依赖 Hive 的 LineageInfo 信息。

血缘的价值不只在"画图",血缘可以支撑影响分析、故障追踪、变更评估、数据质量定位和合规传播。例如删除一个 ODS 字段前,可以先看它影响哪些 DWD、DWS、ADS 表和报表。

4.搜索发现

Atlas 支持通过 UI 按类型、分类、属性值或全文搜索实体,也提供复杂条件搜索的 REST API,并支持 SQL-like 的 DSL 查询。

ini 复制代码
搜索入口
   |
   +-- 按类型: typeName = hive_table
   |
   +-- 按标签: classification = PII
   |
   +-- 按属性: owner = data_team
   |
   +-- DSL: hive_db where name='default'
   |
   +-- 全文: customer order payment

这类搜索能力让 Atlas 更像一个"可查询的数据资产目录"。如果企业内部有数据门户,也可以基于 Atlas REST API 做二次开发,而不一定直接使用 Atlas 原生 UI。

5.业务术语表

Glossary 用来把业务语言和技术资产连接起来。术语表提供面向业务用户的词汇体系,术语可以互相关联、分类,并映射到数据库、表、字段等资产上,从而降低技术术语带来的理解门槛。

Glossary 的价值在于把"业务如何理解数据"和"技术如何存储数据"连接起来。术语可以被分配给实体,如果术语带有分类,该分类会应用到被分配的实体上。

6.安全联动

Atlas 支持细粒度元数据访问控制,并可与 Apache Ranger 集成,使 Ranger 能基于 Atlas 实体上的分类实施授权和数据脱敏策略;例如控制谁能访问被标记为PIISENSITIVE的数据,或让客服用户只能看到被标记为NATIONAL_ID的字段后四位。

六、Atlas架构优势

Atlas 的优势不在单点功能,而在模型、图关系、标签、血缘、API 和生态集成的组合。它既提供类型和实体管理,也提供分类、血缘、搜索、安全与数据脱敏能力;内部用图模型持久化元数据,并通过 REST API 和 Kafka 与外部系统集成。

优势 说明 适合场景
模型可扩展 支持自定义类型、属性、继承和关系 企业有自研平台或非标准资产
图结构天然适合血缘 元数据对象和加工过程可表达为图 影响分析、链路追踪
与 Hadoop 生态集成 官方支持 Hive、HBase、Sqoop、Storm、Kafka 等来源 传统 Hadoop 数据平台
支持标签传播 分类可沿血缘传播 敏感数据治理、合规
REST API 完整 暴露类型、实体、血缘、搜索、术语等接口 自研数据门户、平台集成
可与 Ranger 联动 基于标签实施授权和脱敏 安全治理、权限策略

七、适用场景

场景 为什么适合
Hadoop/Hive 生态的数据治理 Atlas 原生支持 Hive Hook 和 Hive 元数据模型
数据资产目录建设 支持类型、实体、搜索、属性、分类
数据血缘平台建设 DataSet 和 Process 模型适合表达血缘
敏感数据标签治理 支持 Classification 和标签传播
与 Ranger 做标签权限联动 官方明确支持 Ranger 基于 Atlas 分类做授权和脱敏
企业术语管理 Glossary 可把业务术语映射到技术资产
自研数据门户后端 REST API 覆盖发现、实体、类型、血缘、术语等能力

Atlas 不一定适合所有团队。如果数据平台已经以云原生数据目录、Lakehouse Catalog 或商业治理平台为核心,Atlas 可能更多作为兼容 Hadoop 生态的元数据源或治理组件,而不是唯一的全局治理入口。另一个现实问题是,Atlas 的落地质量高度依赖元数据采集链路、血缘解析质量、标签体系设计和运维能力。

八、部署与使用

yaml 复制代码
最小体验流程

下载 Atlas Server 包
       |
       v
tar -xzvf apache-atlas-{version}-server.tar.gz
       |
       v
配置环境变量 / atlas-application.properties
       |
       v
bin/atlas_start.py
       |
       v
curl /api/atlas/admin/version
       |
       v
访问 Web UI: http://localhost:21000

生产部署则通常要考虑 HBase、Solr、Kafka、ZooKeeper 和 Atlas Web Service 的高可用。

Atlas Web Service 支持 active/passive 方式,多个实例中只有 active 实例处理元数据请求,passive 实例会把请求重定向到当前 active 实例;启用 HA 需要配置atlas.server.ha.enabled=trueatlas.server.ids、各实例地址以及 ZooKeeper quorum。

为元数据存储提供高可用时,应让 Atlas 使用分布式 HBase 作为 JanusGraph 的后端;索引存储可使用 Solr 或 Elasticsearch;Kafka 通知服务也建议部署为高可用集群,并为ATLAS_HOOKATLAS_ENTITIES等 topic 设置副本。

九、落地建议

Atlas 落地不要从"把所有元数据都接进来"开始,而应从一个高价值场景切入。例如先围绕 Hive 数仓做库表目录、Owner、生命周期、敏感标签和表级血缘,再逐步推进字段级血缘、业务术语、Ranger 标签策略和自研门户。

一个较稳妥的实施路径如下:

rust 复制代码
阶段 1:资产可见
Hive 元数据接入 -> 表/字段搜索 -> Owner 补齐 -> 基础目录

阶段 2:链路可追踪
Hive Hook -> 表级血缘 -> 重点链路字段级血缘 -> 影响分析

阶段 3:语义可理解
Glossary -> 业务术语 -> 术语绑定表/字段 -> 指标口径沉淀

阶段 4:治理可联动
Classification -> 敏感标签 -> 标签传播 -> Ranger 权限/脱敏

阶段 5:平台化
REST API -> 自研数据门户 -> 审计/质量/生命周期系统集成

Atlas 的技术难点不只在部署,还在"模型设计"。如果类型命名、qualifiedName规则、Owner 规则、标签体系和业务术语没有统一标准,Atlas 很容易变成另一个元数据孤岛。

相关推荐
数字新视界1 小时前
2026模块化机房选型指南:行业市场发展趋势、占有率与竞争梯队分析报告解析
大数据·人工智能·物联网·数据中心·微模块机房·模块化机房·冷通道
姜穆澜4 小时前
OneID 从 0 到 1 完整生产案例(四)
大数据
OsDepK4 小时前
项目快速Git至仓库(完整版)
大数据·git·elasticsearch·搜索引擎
合米AI SOP系统5 小时前
传统产线如何快速上马落地 AI 防错?合米科技 AI SOP 7天即可上线。
大数据·人工智能·科技
思录Echo5 小时前
什么决定具身智能的最终走向?多技术路线与落地现实辨析
大数据·人工智能
xiaohaiAIgeo5 小时前
【2026年】AI监控加行为分析守护实验室安全
大数据·人工智能·科普知识
林墨聊AIGC6 小时前
动漫AI视频创作工具在哪找到的?2026年最新动漫AI视频平台与软件指南
大数据·人工智能·ai作画·aigc·音视频
故七月7 小时前
告别 AI 时代品牌 “隐身”:万域智瞰 AI‑GEO,构建品牌大模型时代营销新基建
大数据·人工智能
数字孪生视频孪生8 小时前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构