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

0 阅读10分钟

一、引言

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

问题没有治理系统时的表现Atlas 试图提供的能力
数据资产不可见表很多,但不知道哪些重要、哪些废弃数据目录、元数据搜索
表含义不清技术表名难以对应业务语义Glossary 业务术语
血缘不清下游报表出错时难以追溯上游表级、字段级血缘
敏感数据难管不知道哪些字段是 PII、SENSITIVEClassification 分类标签
权限难联动权限策略与数据语义脱节与 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 表是一个实体。

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、计算任务、血缘过程

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

+-------------+      +----------------+      +-------------+
| 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 查询。

搜索入口
   |
   +-- 按类型: 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 的落地质量高度依赖元数据采集链路、血缘解析质量、标签体系设计和运维能力。

八、部署与使用

最小体验流程

下载 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 标签策略和自研门户。

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

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

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

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

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

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

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