Apache Atlas 数据目录
概述
Apache Atlas 是 Hadoop 生态的元数据治理与数据目录平台:类型系统定义数据模型,Hook/导入采集元数据,血缘解析数据流转,分类标签打标,配合 Ranger 实现安全审计。本文逐一讲透。
一、Atlas 定位
| 特性 | 说明 |
|---|---|
| 定位 | 元数据治理/数据目录 |
| 生态 | Hadoop 生态 |
| 核心 | 类型 + 实体 + 血缘 |
| 集成 | Hive/HBase/Kafka/Spark |
| 安全 | Ranger 联动 |
价值:
找数据(目录)
理解数据(血缘)
治理数据(分类/审计)二、类型系统
2.1 概念
类型(Type)定义元数据模型:
实体类型(表、列、数据集)
关系类型(血缘、依赖)
枚举(分类、状态)| 类型 | 示例 |
|---|---|
| 实体类型 | hive_table、hive_column |
| 关系 | lineage、owned_by |
| 枚举 | 分类、状态 |
| 属性 | 名称、类型、注释 |
2.2 类型定义
json
{
"name": "hive_table",
"typeName": "hive_table",
"attributes": {
"name": "string",
"db": "hive_db",
"columns": "array<hive_column>"
}
}Atlas 内置类型:
hive_db / hive_table / hive_column
hdfs_path / kafka_topic
自定义类型(扩展)三、实体与关系
3.1 实体
实体 = 类型的实例:
hive_table: db.orders(具体表)
属性含值3.2 关系
实体间关系:
表 → 库(contained)
表 → 列(contains)
表 → 表(血缘 lineage)
表 → Owner(归属)血缘关系:
lineage:数据流转
上游 → 下游四、元数据导入导出
4.1 采集方式
| 方式 | 说明 |
|---|---|
| Hook | 引擎钩子自动上报 |
| Bridge | 桥接器拉取 |
| REST API | 手动导入 |
| 文件 | 批量导入 |
4.2 Hook 采集
Hive Hook:
DDL/DML 触发上报:
建表 → hive_table 实体
查询 → 血缘Spark Hook / Kafka Hook:
作业执行 → 元数据自动更新4.3 导出
导出格式:
Atlas JSON 格式
Atlas 分类/实体
用于备份/迁移/分析五、血缘解析
5.1 血缘类型
| 类型 | 说明 |
|---|---|
| 表级血缘 | 表 → 表 |
| 字段级血缘 | 列 → 列 |
| 作业血缘 | 作业参与的流转 |
5.2 解析方式
1. Hook 自动采集:
Hive/Spark 作业上报输入输出
2. SQL 解析:
INSERT ... SELECT 识别来源
3. 手工补录血缘展示:
上游来源 → 表 → 下游使用
影响分析 / 溯源5.3 血缘应用
| 应用 | 说明 |
|---|---|
| 影响分析 | 改表影响下游 |
| 溯源 | 数据从哪来 |
| 下线评估 | 依赖检查 |
| 质量定位 | 问题来源 |
六、分类与标签
6.1 概念
分类(Classification)= 标签:
给实体打标
标记性质(敏感/质量)| 分类 | 说明 |
|---|---|
| 敏感 | PII/财务 |
| 质量 | 重要/普通 |
| 归属 | 团队/业务 |
| 状态 | 生产/测试 |
6.2 使用
json
// 给表打标签
{
"entity": { "typeName": "hive_table", "attributes": {"qualifiedName": "db.orders@cluster"} },
"classification": { "typeName": "PII" }
}标签价值:
检索过滤
安全策略依据
治理分组七、安全审计
7.1 与 Ranger 集成
Ranger 使用 Atlas 标签做策略:
标签 → 权限策略
数据分级管控流程:
Atlas 标记敏感数据
Ranger 按标签授权
访问时校验7.2 审计
| 审计 | 说明 |
|---|---|
| 操作记录 | 谁访问了什么 |
| 元数据变更 | 历史版本 |
| 血缘审计 | 数据流转 |
Atlas 审计:
JanusGraph + 日志
操作可追溯八、架构与部署
8.1 组件
| 组件 | 说明 |
|---|---|
| Atlas Server | 核心服务 |
| 存储 | JanusGraph/HBase + Solr |
| Hook | 引擎采集 |
| Kafka | 消息通道 |
| UI/API | 访问入口 |
8.2 部署要点
| 要点 | 说明 |
|---|---|
| 依赖 | HBase/Solr/Kafka |
| HA | 服务高可用 |
| 规模 | 元数据量规划 |
| 性能 | 检索索引 |
九、最佳实践
| 实践 | 说明 |
|---|---|
| 标准命名 | 实体规范化 |
| 分类体系 | 统一打标 |
| Hook 全覆盖 | 元数据完整 |
| 血缘定期核对 | 准确性 |
| 与 Ranger 联动 | 安全治理 |
常见问题速查
| 问题 | 要点 |
|---|---|
| 类型系统 | 定义数据模型 |
| 元数据怎么来 | Hook/Bridge/API |
| 血缘怎么解析 | Hook + SQL 解析 |
| 分类干嘛 | 打标/安全 |
| 审计怎么做 | Ranger 联动 + 日志 |
| 架构依赖 | HBase/Solr/Kafka |