Article

数据治理 Atlas

更新于:2026-07-13

第一章:Atlas 概述与核心概念

1.1 什么是 Atlas

概念名称说明注意事项
Apache Atlas是一个开源的数据治理和元数据管理框架,用于对大数据平台中的数据资产进行分类、组织、治理和监控。Atlas 主要面向 Hadoop 生态系统,支持 Hive、HBase、Spark 等组件的元数据管理。
数据治理指对数据的可用性、一致性、准确性、安全性等方面的管理活动。Atlas 提供了从元数据建模到血缘追踪的完整治理能力。
元数据管理对数据的结构、来源、用途、关系等信息进行集中管理和可视化。Atlas 将元数据分为技术元数据、业务元数据和操作元数据。

1.2 Atlas 的主要应用场景

应用场景说明注意事项
数据目录(Data Catalog)构建企业级数据资产目录,便于用户搜索和理解数据。可通过分类(Classification)为数据打标签,提升可发现性。
数据血缘分析(Data Lineage)追踪数据从源头到消费端的流转路径,用于影响分析和问题溯源。血缘信息依赖 Hook 机制采集,需确保各组件正确集成。
合规性与安全治理标记敏感数据(如 PII、GDPR),配合 Ranger 实现细粒度访问控制。分类可设置自动传播策略,确保下游数据继承敏感标签。
影响分析当某个数据表结构变更时,快速识别受影响的下游作业或报表。依赖准确的血缘关系和实体依赖建模。
元数据审计与监控记录元数据变更历史,支持版本追溯和审计需求。所有变更操作均通过 REST API 记录,可集成日志系统。

1.3 Atlas 架构概览

组件名称说明注意事项
Atlas Server核心服务进程,提供 REST API 和 UI,处理元数据的增删改查请求。支持集群部署实现高可用,通常与 HBase 和 Solr 配套使用。
HBase作为 Atlas 的持久化存储层,保存所有元数据对象(类型、实体、关系等)。HBase 需提前部署并配置与 Atlas 的连接参数。
Solr提供全文检索和索引能力,加速元数据查询和搜索性能。SolrCloud 模式推荐用于生产环境以提升可用性和扩展性。
Kafka用于异步事件通知,如元数据变更、血缘更新等消息广播。所有变更事件通过 Kafka 发布,便于外部系统订阅和响应。
Hook 机制用于捕获外部系统(如 Hive、Spark)的元数据变更事件并上报 Atlas。必须在对应组件中启用并配置 Hook 插件才能实现自动同步。
REST API外部系统与 Atlas 交互的主要接口,支持类型、实体、分类等操作。支持 JSON 格式请求/响应,可用于自动化脚本或集成开发。
Web UI图形化界面,供用户浏览元数据、查看血缘、管理分类等操作。基于 Atlas Server 提供的服务,需确保网络可达和认证通过。

1.4 元数据、实体、类型系统基本概念

概念名称说明注意事项
元数据(Metadata)描述数据的数据,如表名、字段、数据类型、所有者、创建时间等。Atlas 中元数据分为技术元数据(schema)、业务元数据(标签、术语)和操作元数据(访问日志)。
类型(Type)定义元数据结构的模板,如 Hive 表、Hive 列、StorageDesc 等。所有实体必须基于某个类型创建,类型系统支持继承和多态。
实体(Entity)类型的具体实例,如某个具体的 Hive 表 sales_order。每个实体有唯一 GUID,可通过属性(如 qualifiedName)定位。
分类(Classification)对实体打标签的方式,用于标记敏感性、生命周期、业务域等。分类可动态添加/移除,支持自动传播到相关实体。
关系(Relationship)描述两个实体之间的关联,如”输入/输出”、“属于”、“引用”等。血缘分析依赖关系链,关系类型由类型系统预定义。
qualifiedName实体的全局唯一标识符,通常由命名空间规则生成,如 sales_order@hive。建议统一命名规范,避免冲突,是查询和关联的关键字段。
GUID(全局唯一标识)Atlas 为每个实体分配的唯一 ID,用于内部引用和追踪。即使实体被删除,GUID 仍保留用于审计和血缘回溯。

第二章:环境搭建与基础配置

2.1 Atlas 安装与部署方式

部署方式说明注意事项
源码编译安装从 Apache 官网下载源码,使用 Maven 构建并生成安装包。需要 JDK 8+、Maven 3.3+ 环境,构建过程耗时较长。
二进制包安装使用官方发布的二进制压缩包(如 apache-atlas-*.tar.gz)直接解压部署。推荐用于测试环境,确保依赖组件已独立部署。
Ambari 集成安装在 HDP(Hortonworks Data Platform)中通过 Ambari 图形化安装 Atlas。自动处理依赖关系,适合企业级 Hadoop 集群部署。
Docker 部署使用社区提供的 Docker 镜像快速启动 Atlas 服务。适用于开发和演示环境,不推荐用于生产。
Kubernetes 部署基于 Helm Chart 或 Operator 在 K8s 集群中部署 Atlas。需要熟悉 K8s 编排,适合云原生架构场景。

2.2 依赖组件(HBase, Solr, Kafka)配置说明

组件配置要点注意事项
HBase配置 atlas.graph.storage.hostname 指向 HBase 集群地址,确保 ZooKeeper 可访问。HBase 需开启 Thrift 或 REST 接口,建议使用独立集群避免资源争用。
Solr配置 atlas.indexer.solr.zookeeper-url 指向 SolrCloud 的 ZooKeeper 地址。建议使用 SolrCloud 模式,提前创建 Atlas 所需的 collection。
Kafka配置 atlas.kafka.bootstrap.servers 指定 Kafka broker 地址列表。Kafka 需创建 ATLAS_ENTITIES 主题,用于元数据变更通知。
ZooKeeperAtlas 自身也使用 ZooKeeper 进行服务发现和协调(高可用模式下)。若启用 HA,需配置多个 ZooKeeper 节点地址。

2.3 Atlas Server 启动与验证

操作步骤说明注意事项
配置文件检查编辑 atlas-env.sh 和 atlas-application.properties,确认数据库、索引、Kafka 等配置正确。特别注意 atlas.rest.address 和 atlas.server.bind.address 设置。
启动命令执行 bin/atlas_start.py 脚本启动 Atlas Server。首次启动会自动初始化 HBase 表结构和 Solr 索引。
日志查看查看 logs/atlas.log 和 logs/atlas.out,确认无错误信息。关注 HBase 连接失败、Solr 超时、Kafka 无法连接等常见问题。
服务验证访问 http://:21000,登录默认用户 admin / admin。若页面无法加载,检查防火墙、端口占用和依赖服务状态。
REST API 测试使用 curl -u admin:admin http://:21000/api/atlas/v2/types/typedefs 查询类型定义。成功返回 JSON 数据表示服务正常。

2.4 Atlas Web UI 介绍与使用

功能模块说明注意事项
Dashboard(仪表盘)显示元数据统计信息,如实体数量、类型分布、最近活动等。用于快速了解元数据整体情况。
Search(搜索)支持按名称、类型、分类等条件搜索元数据实体。支持模糊搜索和高级筛选,依赖 Solr 索引。
Types(类型管理)查看和管理所有类型定义(Class、Enum、Struct)。可查看内置类型或自定义类型的属性和关系。
Entities(实体管理)浏览具体实体详情,包括属性、分类、关系和血缘。可手动添加/移除分类,查看实体变更历史。
Lineage(血缘图)可视化展示某个实体的数据来源和去向。支持前后向血缘查看,依赖 Hook 采集的数据。
Tags(标签管理)管理所有分类(Classification),支持创建、编辑和删除。删除分类前需确认无实体正在使用。
Admin(管理)查看系统状态、配置信息、用户权限等。生产环境建议限制管理员权限访问。

第三章:类型系统(Type System)

3.1 类型系统概述

概念名称说明注意事项
类型系统(Type System)Atlas 的核心元数据建模机制,用于定义元数据对象的结构和关系。所有元数据实体必须基于预定义的类型创建。
类型(Type)描述某一类元数据对象的模板,如 Hive 表、Hive 列等。类型是静态的,定义了实体的属性、数据类型和约束。
类型层次支持继承机制,子类型可继承父类型的属性并扩展新属性。例如 DataSet 是 Asset 的子类型,HiveTable 是 DataSet 的子类型。
类型分类主要分为 Class、Struct、Enum、Trait(Classification)、Association 等。Class 用于实体定义,Struct 用于复合属性,Enum 用于枚举值。
typedef(类型定义)类型的完整定义结构,包含名称、属性、超类型、关系等信息。通过 REST API 操作 typedef 实现类型管理。

3.2 内置类型与系统类型

类型名称类型分类说明注意事项
AssetClass所有数据资产的基类,包含 common metadata(如名称、所有者)。不可直接实例化,用于继承。
DataSetClass数据集的抽象类型,如表、文件等,继承自 Asset。大多数数据实体(如 HiveTable)继承自此类型。
ProcessClass表示数据处理过程,如 ETL 作业、Spark 任务等。用于构建血缘关系中的处理节点。
HiveTableClass表示 Hive 表的完整结构,包含列、分区、存储信息等。由 Hive Hook 自动创建,也可手动定义。
HiveColumnClass表示 Hive 表中的列,包含数据类型、注释等。与 HiveTable 通过 columns 关联。
ClassificationClass用于定义分类(标签)类型,如 PII、GDPR。可附加到任何实体上。
EnumType枚举类型,用于定义一组固定取值的字段。如 DataTier 可定义为 dev, prod, staging。
StructType结构化类型,用于组合多个字段,作为 Class 的属性使用。不可独立实例化,常用于扩展复杂属性。
PolicyTagClass与 Ranger 集成使用的策略标签类型。用于安全策略的元数据绑定。

3.3 自定义类型定义(Class, Enum, Struct)

类型分类说明注意事项
Class(类)用于定义可实例化的元数据实体类型,如自定义的 KafkaTopic。必须指定 superTypes(如 DataSet),支持多继承。
Enum(枚举)定义一组命名的常量值,用于字段约束。需提供值列表和可选的描述,常用于状态字段。
Struct(结构体)定义无独立 GUID 的复合数据结构,作为其他类型的属性嵌入。不能被分类或拥有关系,仅用于数据组织。
Trait(特质)特殊的 Class 类型,用于动态附加行为或标签到实体。即 Classification 类型,可运行时添加/移除。
Association定义两个类型之间的关系,如 HiveTable 与 HiveColumn 的一对多关系。需指定关系名称、方向和基数。

3.4 类型的创建、查询与删除操作

方法名称语法用途代码示例注意事项
创建类型(POST)POST /api/atlas/v2/types/typedefs批量创建一个或多个类型定义。见下方 JSON 示例必须以 typedefs 格式提交,支持多类型批量创建。
查询所有类型GET /api/atlas/v2/types/typedefs获取系统中所有类型定义。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/typedefs响应数据量大,建议按需查询特定类型。
查询指定类型GET /api/atlas/v2/types/typedef/name/{name}获取某个具体类型的定义。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/typedef/name/HiveTable替换 {name} 为实际类型名。
删除类型DELETE /api/atlas/v2/types/typedef/name/{name}删除指定名称的类型定义。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/types/typedef/name/DataSensitivity仅能删除无实体引用的自定义类型,内置类型不可删除。
更新类型PUT /api/atlas/v2/types/typedefs更新现有类型定义(需完整结构)。同创建类型,但使用 PUT 方法并包含现有类型定义。类型更新受限,不支持删除已有属性,仅可新增。

创建类型请求示例

{
  "classTypes": [],
  "enumTypes": [
    {
      "name": "DataSensitivity",
      "typeVersion": "1.0",
      "values": [
        { "value": "Public", "description": "公开数据" },
        { "value": "Internal", "description": "内部数据" }
      ]
    }
  ],
  "structTypes": [],
  "classificationTypes": [],
  "entityTypes": []
}

第四章:实体管理(Entities)

4.1 实体(Entity)概念与结构

概念名称说明注意事项
实体(Entity)类型的具体实例,如一个名为 user_info 的 Hive 表。每个实体对应一条业务数据对象。
GUID全局唯一标识符,由 Atlas 自动生成,用于唯一标识实体。即使实体删除,GUID 仍保留用于血缘追溯。
qualifiedName用户定义的全局唯一名称,用于定位实体(如 user_info@dev)。建议统一命名规范,是查询和关联的关键字段。
属性(Attributes)实体的字段,由其类型定义决定,如表名、列列表、所有者等。支持基本类型和复杂类型(Struct、Array)。
分类(Classifications)附加在实体上的标签,用于标记敏感性、生命周期等。可动态添加/移除,支持传播策略。
状态(Status)实体状态,如 ACTIVE、DELETED。删除操作为软删除,状态变为 DELETED。
创建/更新时间记录实体的创建和最后修改时间戳。用于审计和变更追踪。

4.2 创建实体(REST API 与 UI)

方法名称语法用途代码示例注意事项
创建实体(API)POST /api/atlas/v2/entity创建一个或多个实体实例。见下方 JSON 示例必须指定 typeName 和 qualifiedName,属性需符合类型定义。
通过 UI 创建Web UI → Entities → Create Entity图形化创建实体(有限类型支持)。仅适用于简单类型,复杂结构建议使用 API。
批量创建实体POST /api/atlas/v2/entity/bulk一次性创建多个同类型或不同类型实体。见下方 JSON 示例提升批量导入效率,减少网络开销。

创建实体请求示例

{
  "entities": [
    {
      "typeName": "hive_table",
      "attributes": {
        "qualifiedName": "sales_2025@hive",
        "name": "sales_2025",
        "description": "2025年销售数据",
        "owner": "data_team"
      }
    }
  ]
}

批量创建实体请求示例

{
  "entities": [
    { "typeName": "hive_table", "attributes": { "qualifiedName": "t1@hive" } },
    { "typeName": "hive_table", "attributes": { "qualifiedName": "t2@hive" } }
  ]
}

4.3 查询与检索实体

方法名称语法用途代码示例注意事项
按 GUID 查询GET /api/atlas/v2/entity/guid/{guid}根据 GUID 获取实体详情。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123最精确的查询方式,返回完整实体信息。
按属性查询GET /api/atlas/v2/entity/bulk?attr_name={value}根据属性值批量查询实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/entity/bulk?attr:qualifiedName=sales_2025@hive"支持 attr: 前缀,仅支持索引字段。
按分类查询GET /api/atlas/v2/entity/bulk/classification/{classification}获取带有指定分类的所有实体。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/bulk/classification/PII用于合规性审计和敏感数据发现。
DSL 查询POST /api/atlas/v2/search/dsl使用 DSL 语法执行复杂查询。见下方 JSON 示例支持条件、排序、分页,功能强大。
全文搜索GET /api/atlas/v2/search/basic?query={keyword}全文关键字搜索实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/search/basic?query=sales"依赖 Solr 全文索引,支持模糊匹配。

DSL 查询请求示例

{
  "typeName": "hive_table",
  "dsl": "hive_table where name='sales_2025'"
}

4.4 更新与删除实体

方法名称语法用途代码示例注意事项
更新实体属性PUT /api/atlas/v2/entity/guid/{guid}修改实体的属性值。见下方 JSON 示例必须提供完整实体结构或使用 partialUpdate(部分更新)。
部分更新属性POST /api/atlas/v2/entity/partial仅更新指定属性,不覆盖整个实体。见下方 JSON 示例推荐用于小范围修改,避免误覆盖。
删除实体DELETE /api/atlas/v2/entity/guid/{guid}删除指定 GUID 的实体(软删除)。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123实际为状态置为 DELETED,仍可通过历史接口查询。
批量删除实体DELETE /api/atlas/v2/entity/bulk?guid={g1}&guid={g2}一次性删除多个实体。curl -X DELETE -u admin:admin "http://atlas:21000/api/atlas/v2/entity/bulk?guid=abc123&guid=def456"每次最多删除 100 个实体,需提供 GUID 列表。

更新实体属性请求示例

{
  "entity": {
    "guid": "abc123",
    "typeName": "hive_table",
    "attributes": {
      "description": "更新后的描述"
    }
  }
}

部分更新属性请求示例

{
  "entity": {
    "guid": "abc123",
    "attributes": {
      "owner": "new_owner"
    }
  }
}

4.5 实体分类(Classification)操作

方法名称语法用途代码示例注意事项
添加分类POST /api/atlas/v2/entity/guid/{guid}/classifications为实体添加一个或多个分类。见下方 JSON 示例分类必须已存在,支持附加属性。
查询实体分类GET /api/atlas/v2/entity/guid/{guid}/classifications获取实体当前所有分类。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classifications返回分类名称、创建时间、属性等信息。
移除分类DELETE /api/atlas/v2/entity/guid/{guid}/classification/{classificationName}移除实体上的指定分类。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classification/PII仅移除该实体上的分类,不影响其他实体。
批量添加分类POST /api/atlas/v2/entity/bulk/classifications为多个实体批量添加同一分类。见下方 JSON 示例提升标签管理效率,适用于大规模打标。
分类传播配置 classification 的 propagate 属性控制分类是否自动传播到关联实体。在定义 Classification 类型时设置 “propagate”: true例如 PII 标签可传播到下游表,需谨慎使用。

添加分类请求示例

{
  "classifications": [
    {
      "typeName": "PII",
      "attributes": {
        "confidence": 95
      }
    }
  ]
}

批量添加分类请求示例

{
  "classification": { "typeName": "GDPR" },
  "entityGuids": ["abc123", "def456"]
}

第五章:分类与标签(Classifications)

5.1 分类(Classification)的作用与设计

概念名称说明注意事项
分类(Classification)又称标签(Tag),用于对元数据实体进行标记,表达其业务含义、安全等级、生命周期等属性。是实现数据治理策略的关键机制。
动态绑定分类可在实体创建后动态添加或移除,无需修改类型定义。提供灵活的元数据管理能力。
多分类支持一个实体可同时拥有多个分类,如 PII、GDPR、Finance。支持多维度数据组织和策略应用。
与 Ranger 集成分类可作为 Ranger 策略的匹配条件,实现基于标签的访问控制。需启用 Atlas-Ranger 集成插件。
自动化打标可通过规则引擎或机器学习模型自动为实体打上分类。如基于字段名识别 PII 数据并自动标记。
传播机制(Propagation)分类可配置是否自动传播到相关实体(如下游表、列)。用于确保敏感数据策略的延续性。

5.2 创建与管理分类

方法名称语法用途代码示例注意事项
创建分类类型POST /api/atlas/v2/types/typedefs定义新的 Classification 类型。见下方 JSON 示例必须在 classificationTypes 数组中定义,可设置 options 和属性。
查询所有分类类型GET /api/atlas/v2/types/classificationdefs获取系统中所有已定义的分类类型。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/classificationdefs返回所有 Classification 的结构定义。
查询指定分类类型GET /api/atlas/v2/types/classificationdef/name/{name}获取某个分类类型的详细定义。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/classificationdef/name/Confidential替换 {name} 为实际分类名。
更新分类类型PUT /api/atlas/v2/types/classificationdef/name/{name}修改现有分类类型的定义。同创建请求,使用 PUT 方法提交完整定义。不支持删除已有属性,仅可新增属性。
删除分类类型DELETE /api/atlas/v2/types/classificationdef/name/{name}删除指定名称的分类类型。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/types/classificationdef/name/Confidential仅能删除无实体引用的自定义分类类型。

创建分类类型请求示例

{
  "classificationTypes": [
    {
      "name": "Confidential",
      "description": "机密数据",
      "typeVersion": "1.0",
      "options": {
        "owner": "admin",
        "propagate": "true"
      },
      "attributeDefs": [
        {
          "name": "reviewDate",
          "typeName": "date",
          "cardinality": "SINGLE"
        }
      ]
    }
  ]
}

5.3 为实体添加和移除分类

方法名称语法用途代码示例注意事项
添加分类(单实体)POST /api/atlas/v2/entity/guid/{guid}/classifications为指定 GUID 的实体添加一个或多个分类。见下方 JSON 示例支持附加属性(如置信度、来源),分类必须已存在。
批量添加分类POST /api/atlas/v2/entity/bulk/classifications为多个实体批量添加同一分类。见下方 JSON 示例提高大规模打标效率,减少 API 调用次数。
查询实体分类GET /api/atlas/v2/entity/guid/{guid}/classifications获取实体当前所有已应用的分类。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classifications返回分类名称、创建时间、附加属性等信息。
移除分类(单个)DELETE /api/atlas/v2/entity/guid/{guid}/classification/{classificationName}移除实体上的指定分类。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classification/PII仅影响该实体,不影响其他实体上的相同分类。
批量移除分类不支持直接批量移除需循环调用单个移除接口。脚本化处理多个 GUID 的移除请求。注意控制并发和错误重试机制。

添加分类(单实体)请求示例

{
  "classifications": [
    {
      "typeName": "PII",
      "attributes": {
        "source": "auto-detect"
      }
    }
  ]
}

批量添加分类请求示例

{
  "classification": {
    "typeName": "GDPR",
    "attributes": { "expireAfter": "5y" }
  },
  "entityGuids": ["guid1", "guid2", "guid3"]
}

5.4 分类的继承与传播策略

策略名称说明注意事项
propagate(传播)控制分类是否自动传播到通过关系连接的实体(如输入/输出)。在分类定义的 options 中设置 “propagate”: “true”。
传播方向可传播到下游(out)或上游(in),默认双向。通过 propagateTo 和 removePropagationOnEntityDelete 配置。
关系类型限制传播通常发生在 Process 类型的输入/输出关系中。如 Hive 查询作业的输入表和输出表。
自动打标规则可结合规则引擎,基于实体属性自动应用分类。如字段名包含 “email” 则标记为 PII。
传播性能影响大规模传播可能导致元数据更新延迟。建议在测试环境验证传播逻辑。
手动覆盖用户可手动移除传播后的分类,打破自动继承链。适用于特殊业务场景的例外处理。

第六章:血缘与关系(Lineage and Relationships)

6.1 数据血缘(Lineage)基本概念

概念名称说明注意事项
数据血缘(Data Lineage)描述数据从源头到消费端的流转路径,包括转换过程和依赖关系。是影响分析、问题溯源和合规审计的基础。
前向血缘(Forward Lineage)从某个源表出发,查看其数据流向了哪些下游表或作业。用于影响分析,评估变更影响范围。
后向血缘(Backward Lineage)从某个目标表出发,查看其数据来自哪些上游表或作业。用于问题溯源,查找数据错误来源。
血缘粒度可以是表级、列级或混合粒度。列级血缘更精确但采集成本更高。
血缘来源主要通过 Hook 机制从 Hive、Spark 等组件采集执行计划生成。依赖组件的 Hook 插件正确安装和配置。
实体关系(Relationship)血缘图的基础,表示两个实体之间的关联(如 inputTo、outputFrom)。关系类型由类型系统定义。

6.2 查看实体的血缘图

方法名称语法用途代码示例注意事项
获取后向血缘GET /api/atlas/v2/lineage/{guid}/backward获取指定实体的后向血缘图。curl -u admin:admin http://atlas:21000/api/atlas/v2/lineage/abc123/backward返回上游依赖的实体和关系链。
获取前向血缘GET /api/atlas/v2/lineage/{guid}/forward获取指定实体的前向血缘图。curl -u admin:admin http://atlas:21000/api/atlas/v2/lineage/abc123/forward返回下游消费的实体和关系链。
获取全路径血缘GET /api/atlas/v2/lineage/{guid}获取实体的完整血缘路径(前后向)。curl -u admin:admin http://atlas:21000/api/atlas/v2/lineage/abc123包含所有相关节点和连接。
血缘深度控制添加 depth 参数限制血缘层级。/api/atlas/v2/lineage/abc123/forward?depth=2避免返回过大图结构,影响性能。
Web UI 查看Atlas Web UI → Entity → Lineage Tab图形化展示血缘关系。支持缩放、展开/折叠、节点详情查看。

6.3 血缘数据的生成机制(Hook 与集成)

组件Hook 机制说明注意事项
Hive Hook通过 Hive 的 atlas-hook-hive 插件,在查询执行前后捕获 SQL 解析树和执行计划。需将 JAR 包放入 Hive auxlib 目录,并配置 hive-site.xml。
Spark Hook通过 Spark Listener 机制监听 Spark 事件,捕获 DataFrame 转换和 SQL 执行信息。需在 spark-defaults.conf 中启用 Atlas 插件。
Kafka Hook监听 Kafka 主题的生产/消费行为,建立数据流血缘。适用于流处理场景的数据追踪。
自定义 Hook开发者可实现 Hook 接口,上报自定义系统的元数据变更和血缘事件。需通过 Kafka 发送 EntityMutationEvent 消息。
Hook 事件流程组件执行 → Hook 拦截 → 构造实体/关系 → 发送到 Kafka → Atlas Server 消费并持久化。确保 Kafka 主题 ATLAS_ENTITIES 可写。

6.4 关系类型与关系查询

概念名称说明注意事项
内置关系类型如 DataSet 与 Process 之间的 inputs/outputs,HiveTable 与 HiveColumn 的 columns。由类型系统预定义,用于构建血缘和结构关系。
自定义关系可通过类型系统定义新的 Association 类型,建立特定实体间的关联。如 owns(属于)、references(引用)等。
查询实体关系GET /api/atlas/v2/relationship/guid/{guid}获取指定实体参与的所有关系。
关系方向每个关系有明确的方向(如 inputTo 表示某表是某作业的输入)。血缘分析依赖方向性判断数据流向。
关系属性关系本身可包含属性,如映射规则、转换逻辑描述。增强血缘信息的语义表达能力。

第七章:REST API 使用详解

7.1 Atlas REST API 概述

概念名称说明注意事项
REST API 版本Atlas 主要使用 /api/atlas/v2/ 路径前缀。v1 已弃用,建议统一使用 v2。
请求格式请求体通常为 JSON 格式,Content-Type: application/json。所有 API 均通过 JSON 交互。
响应结构成功响应返回 200 或 201,错误返回 4xx/5xx 及错误信息。错误信息包含 errorCode、errorMessage。
主要资源路径/types(类型管理)、/entity(实体操作)、/search(搜索)、/lineage(血缘)等。资源路径与功能模块一一对应。
分页支持大多数查询接口支持 offset 和 limit 参数进行分页。避免一次性返回过多数据导致性能问题。
异步操作部分操作(如大规模导入)可能为异步执行,返回任务 ID。需轮询状态接口获取结果。

7.2 认证与访问控制(Basic Auth, Kerberos)

认证方式说明注意事项
Basic Auth使用用户名和密码进行基础认证,通过 HTTP Authorization 头传递。测试环境常用,生产环境建议配合 HTTPS 使用。
Kerberos企业级安全认证,使用 SPNEGO 协议实现单点登录。需配置 JAAS、krb5.conf 和服务主体(principal)。
LDAP 集成Atlas 可配置为使用外部 LDAP/AD 进行用户认证。需在 atlas-application.properties 中设置 LDAP 参数。
访问控制认证后,权限由 Ranger 或 Atlas 内置 ACL 控制。不同用户对类型、实体的操作权限可精细化管理。
API 调用示例(Basic)curl -u admin:admin http://atlas:21000/api/atlas/v2/types/typedefs最简单认证方式,适合脚本调用。
API 调用示例(Kerberos)curl --negotiate -u : http://atlas:21000/api/atlas/v2/types/typedefs需提前执行 kinit 获取 TGT。

7.3 类型管理相关 API

方法名称语法用途代码示例注意事项
获取所有类型定义GET /api/atlas/v2/types/typedefs查询系统中所有类型(Class、Enum、Struct 等)。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/typedefs响应数据量大,建议按需使用。
获取指定类型定义GET /api/atlas/v2/types/typedef/name/{typeName}获取某个具体类型的完整定义。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/typedef/name/HiveTable替换 {typeName} 为实际名称。
创建/更新类型POST 或 PUT /api/atlas/v2/types/typedefs批量创建或更新类型定义。见下方 JSON 示例POST 用于创建,PUT 用于更新,结构需完整。
删除类型DELETE /api/atlas/v2/types/typedef/name/{typeName}删除指定名称的自定义类型。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/types/typedef/name/CustomTable仅能删除无实体引用的类型,内置类型不可删。
查询分类类型GET /api/atlas/v2/types/classificationdefs获取所有已定义的 Classification 类型。curl -u admin:admin http://atlas:21000/api/atlas/v2/types/classificationdefs用于标签管理场景。

创建/更新类型请求示例

{
  "entityTypes": [
    {
      "name": "CustomTable",
      "superTypes": ["DataSet"],
      "attributeDefs": [
        { "name": "env", "typeName": "string" }
      ]
    }
  ]
}

7.4 实体操作相关 API

方法名称语法用途代码示例注意事项
创建实体POST /api/atlas/v2/entity创建一个或多个实体实例。见下方 JSON 示例必须指定 typeName 和 qualifiedName。
按 GUID 查询实体GET /api/atlas/v2/entity/guid/{guid}根据 GUID 获取实体详情。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123最精确的查询方式。
批量按属性查询GET /api/atlas/v2/entity/bulk根据属性值批量查询实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/entity/bulk?attr:qualifiedName=sales_jan@cl1"支持 attr: 前缀,仅限索引字段。
更新实体(全量)PUT /api/atlas/v2/entity/guid/{guid}全量更新指定 GUID 的实体。见下方 JSON 示例需提供完整实体结构,避免遗漏属性。
部分更新实体POST /api/atlas/v2/entity/partial仅更新指定属性,不覆盖其他字段。见下方 JSON 示例推荐用于小范围修改。
删除实体DELETE /api/atlas/v2/entity/guid/{guid}软删除指定实体(状态置为 DELETED)。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123实体仍可通过历史接口访问。

创建实体请求示例

{
  "entities": [
    {
      "typeName": "hive_table",
      "attributes": {
        "qualifiedName": "sales_jan@cl1",
        "name": "sales_jan"
      }
    }
  ]
}

更新实体(全量)请求示例

{
  "entity": {
    "guid": "abc123",
    "typeName": "hive_table",
    "attributes": {
      "description": "2025年1月销售数据"
    }
  }
}

部分更新实体请求示例

{
  "entity": {
    "guid": "abc123",
    "attributes": {
      "owner": "analyst_team"
    }
  }
}

7.5 分类与标签操作 API

方法名称语法用途代码示例注意事项
为实体添加分类POST /api/atlas/v2/entity/guid/{guid}/classifications为指定实体添加一个或多个分类。见下方 JSON 示例分类必须已存在,支持附加属性。
查询实体分类GET /api/atlas/v2/entity/guid/{guid}/classifications获取实体当前所有分类。curl -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classifications返回分类列表及元数据。
移除实体分类DELETE /api/atlas/v2/entity/guid/{guid}/classification/{classificationName}移除实体上的指定分类。curl -X DELETE -u admin:admin http://atlas:21000/api/atlas/v2/entity/guid/abc123/classification/PII仅影响该实体。
批量添加分类POST /api/atlas/v2/entity/bulk/classifications为多个实体批量添加同一分类。见下方 JSON 示例提高大规模打标效率。
创建分类类型POST /api/atlas/v2/types/typedefs在 classificationTypes 数组中定义新分类。参见 5.2 节示例需完整 typedef 结构。

为实体添加分类请求示例

{
  "classifications": [
    {
      "typeName": "PII",
      "attributes": {
        "confidence": 85
      }
    }
  ]
}

批量添加分类请求示例

{
  "classification": {
    "typeName": "Archived"
  },
  "entityGuids": ["guid1", "guid2"]
}

7.6 搜索与查询 API(DSL 与 Full-Text)

方法名称语法用途代码示例注意事项
基本搜索(关键词)GET /api/atlas/v2/search/basic?query={keyword}全文关键字搜索实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/search/basic?query=sales"依赖 Solr 全文索引,支持模糊匹配。
按分类搜索GET /api/atlas/v2/search/basic?classification={tagName}搜索带有指定分类的所有实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/search/basic?classification=PII"用于合规性审计。
按类型搜索GET /api/atlas/v2/search/basic?typeName={typeName}搜索指定类型的所有实体。curl -u admin:admin "http://atlas:21000/api/atlas/v2/search/basic?typeName=hive_table"支持分页和排序。
DSL 查询POST /api/atlas/v2/search/dsl使用 DSL 语法执行结构化查询。见下方 JSON 示例功能强大,支持复杂条件和投影。
Gremlin 查询POST /api/atlas/v2/search/gremlin使用 Gremlin 图查询语言(高级功能)。{ "query": "g.V().has('typeName', 'hive_table')" }需熟悉图数据库查询语法。
高级搜索POST /api/atlas/v2/search/advanced支持组合条件、排序、分页的复杂搜索。见下方 JSON 示例适合构建数据目录前端。

DSL 查询请求示例

{
  "dsl": "from hive_table select name, owner where name='sales_2025'"
}

高级搜索请求示例

{
  "typeName": "hive_table",
  "attributes": ["name", "owner"],
  "sortBy": "name",
  "sortOrder": "ASCENDING"
}

第八章:搜索与查询语言

8.1 基本搜索机制(关键词、分类、类型)

搜索方式说明注意事项
关键词搜索输入任意关键字,匹配实体名称、描述、属性等字段。通过 Web UI 搜索框或 basic API 实现。
按分类搜索筛选带有特定标签(如 PII、GDPR)的实体。用于快速发现敏感数据或特定业务域数据。
按类型搜索查找特定类型的所有实例,如所有 Hive 表或 Kafka 主题。是组织和浏览元数据的基础方式。
组合筛选在搜索结果页面使用多条件筛选(如类型 + 分类 + 所有者)。提升搜索精确度,减少结果集噪声。
模糊匹配支持通配符(*)和部分匹配,提高容错性。如搜索 user* 可匹配 user_info、user_log。

8.2 Atlas DSL(Domain Specific Language)语法

语法结构说明示例注意事项
基本查询from {type} select {attributes}from hive_table select name, owner类似 SQL,但仅支持查询,不支持 JOIN。
条件过滤where {condition}where owner = ‘admin’支持 =, !=, <, >, <=, >=, in, like。
属性投影select {attr1}, {attr2}select name, qualifiedName, createTime可指定返回的属性列表,减少数据传输。
限制结果数limit {n}limit 100防止返回过多数据,建议始终使用。
排序order by {attr} [asc|desc]order by createTime desc支持按指定属性升序或降序。
嵌套属性访问使用点号访问嵌套结构select columns.name from hive_table适用于 Struct 类型属性。
多条件组合使用 and / or 连接where type = ‘fact’ and env = ‘prod’注意逻辑优先级,建议使用括号。

8.3 全文检索与属性过滤

功能说明注意事项
全文检索基于 Solr 实现,对实体所有文本字段建立倒排索引。搜索性能快,适合探索式查询。
属性过滤在基本搜索中通过 attr_{name}:{value} 语法过滤。如 attr_name:sales* 匹配名称前缀为 sales 的实体。
分类过滤使用 tag:{tagName} 语法。tag:PII 查找所有标记为 PII 的实体。
类型过滤使用 type:{typeName} 语法。type:hive_table 限定搜索范围。
高亮显示搜索结果中匹配关键词的部分可高亮显示。提升用户体验,快速定位匹配内容。
拼写纠错Solr 支持自动拼写建议和纠错。降低用户输入错误的影响。

8.4 高级查询示例与优化建议

场景查询示例优化建议
查找所有生产环境的 Hive 表from hive_table where qualifiedName like ’*@prod’使用索引字段(如 qualifiedName)进行过滤,避免全表扫描。
查找某用户拥有的敏感数据表from hive_table where owner = ‘alice’ and tag:PII组合分类和属性条件,利用索引加速。
查找最近 7 天创建的表from hive_table where createTime >= ‘2025-09-25T00:00:00Z’时间范围查询需确保 createTime 已索引。
查找包含 email 字段的表from hive_table where columns.name like ‘%email%‘嵌套属性查询可能较慢,避免在大模型上频繁使用。
分页查询大批量数据from hive_table select name limit 100 offset 0使用 limit 和 offset 分批获取,避免超时。
仅获取关键属性from hive_table select name, owner, qualifiedName减少返回字段,降低网络开销和解析时间。

第九章:集成与 Hook 机制

9.1 Hook 机制原理

概念名称说明注意事项
Hook(钩子)一种事件监听机制,用于捕获外部系统(如 Hive、Spark)的元数据变更和执行操作。是 Atlas 实现自动化元数据采集的核心。
事件驱动架构当目标系统执行 DDL 或 DML 操作时,Hook 拦截事件并生成元数据变更消息。确保元数据与实际环境同步。
消息传输Hook 将构造好的 EntityMutationEvent 消息发送到 Kafka。Kafka 作为异步解耦的中间件,提升系统稳定性。
Atlas Server 消费Atlas Server 订阅 Kafka 主题(默认 ATLAS_ENTITIES),消费并处理事件。消费后持久化到 HBase 并更新 Solr 索引。
血缘生成根据 SQL 执行计划或 DAG 信息,解析出输入/输出关系,构建血缘图。依赖组件自身的解析能力(如 Hive 的 QueryPlan)。
插件化设计每个集成组件(Hive、Spark)都有独立的 Hook 实现模块。可扩展性强,支持自定义 Hook 开发。

9.2 Hive Hook 配置与使用

配置步骤说明注意事项
复制 JAR 包将 atlas-hook-hive-*.jar 及其依赖复制到 Hive 的 auxlib 目录。确保所有 Hive Server 节点都部署。
配置 hive-site.xml添加 Atlas 相关属性,启用 Hook。见下方 XML 配置示例
配置 atlas-application.properties设置 Kafka 地址、Atlas Server 地址等。atlas.kafka.bootstrap.servers=kafka:9092
atlas.rest.address=http://atlas:21000
启动 Hive 服务重启 Hive Server 使配置生效。检查日志确认 Hook 初始化成功。
验证血缘采集执行 Hive SQL(如 INSERT INTO t2 SELECT * FROM t1)。在 Atlas UI 中查看 t1 和 t2 的血缘关系是否生成。
常见问题Kafka 连接失败、权限不足、JAR 包冲突。检查日志 hive-execution.log 和 atlas-hook.log。

hive-site.xml Hook 配置

<property>
  <name>hive.exec.post.hooks</name>
  <value>org.apache.atlas.hive.hook.HiveHook</value>
</property>
<property>
  <name>atlas.hook.hive.synchronous</name>
  <value>false</value>
</property>

9.3 Spark Hook 集成方法

集成方式说明注意事项
Spark ListenerAtlas 提供 AtlasSparkListener,通过 Spark 的监听器机制捕获事件。支持 Spark SQL 和 DataFrame 操作。
配置 spark-defaults.conf启用 Listener 并设置 Atlas 参数。spark.sql.queryExecutionListeners org.apache.atlas.spark.AtlasSparkListener
spark.atlas.rest.address http://atlas:21000
spark.atlas.kafka.bootstrap.servers kafka:9092
提交作业时添加 JAR使用 —jars 参数指定 Atlas Hook JAR 包。spark-submit --jars atlas-spark-hook-*.jar ...
Spark Thrift Server 集成为 Spark Thrift Server 配置 Listener,支持 JDBC/ODBC 客户端的血缘采集。配置方式与 spark-defaults.conf 相同。
血缘粒度支持表级和列级血缘,依赖 Spark 的逻辑执行计划。复杂转换可能影响血缘准确性。
验证方法执行 Spark SQL 查询,检查 Atlas 中是否生成 Process 实体和血缘关系。注意查看 SparkProcess 类型的实体。

9.4 Kafka 消息监听与处理流程

流程步骤说明注意事项
消息生产Hive/Spark Hook 构造 EntityMutationEvent 并发送到 Kafka ATLAS_ENTITIES 主题。消息包含操作类型(CREATE/UPDATE/DELETE)、实体列表。
消息结构JSON 格式,包含 operation, typeName, entities, user 等字段。示例:{“operation”:“CREATE”,“typeName”:“hive_table”,…}
Atlas Server 消费Atlas Server 启动 Kafka Consumer,订阅 ATLAS_ENTITIES 主题。消费组名为 atlas,支持多实例负载均衡。
事件处理Server 解析消息,调用元数据管理 API 执行增删改操作。包括创建实体、更新关系、触发血缘分析。
错误处理若处理失败(如网络异常),消息保留在 Kafka 中可重试。确保 Kafka 保留策略足够长(如 7 天)。
监控与告警监控 Kafka 消费延迟(Lag)、消息积压情况。使用 Kafka Manager 或 Prometheus + Grafana。
自定义消息源可开发外部程序生成 EntityMutationEvent 发送到 Kafka,实现非标准系统集成。用于同步自定义应用的元数据。

第十章:安全与权限控制

10.1 Atlas 安全模型概述

安全层面说明注意事项
认证(Authentication)验证用户身份,支持 Basic Auth、Kerberos、LDAP。生产环境推荐 Kerberos 或 LDAP。
授权(Authorization)控制用户对资源(类型、实体)的操作权限(读、写、管理)。基于角色的访问控制(RBAC)。
数据安全通过分类(Classification)标记敏感数据,配合 Ranger 实现动态脱敏。如 PII、PCI 数据的访问策略。
传输安全支持 HTTPS 加密通信,防止数据窃听。需配置 SSL 证书。
审计日志记录所有用户操作(登录、元数据变更),用于合规审计。日志存储于文件或集成外部系统。
多租户支持可为不同业务部门或项目设置独立的元数据视图和权限。通过命名空间(qualifiedName)和标签实现隔离。

10.2 基于 Ranger 的访问控制集成

集成机制说明注意事项
Ranger PluginAtlas 作为 Ranger 的一个服务类型(Service Type)进行管理。在 Ranger Admin 中添加 Atlas 服务。
策略定义在 Ranger UI 中创建访问策略,基于用户、组、分类、属性等条件。如”允许 analyst 组读取非 PII 的 hive_table”。
动态策略策略可基于 Atlas 分类动态生效,实现细粒度控制。分类变更后策略自动更新。
数据脱敏Ranger 可配置脱敏策略(如掩码、哈希),对敏感字段返回脱敏数据。与 Atlas 的 PII 标签联动。
行过滤支持行级过滤策略,仅返回满足条件的数据行。如仅允许查看本部门数据。
策略同步Ranger 周期性从 Atlas 拉取元数据和分类信息,更新策略评估上下文。确保网络连通性和认证配置正确。

10.3 用户、角色与权限管理

管理方式说明注意事项
内置用户管理Atlas 支持本地用户和角色(在 users-credentials.properties 中配置)。适用于小规模部署。
LDAP/AD 集成配置 Atlas 连接外部目录服务,使用企业统一账号。需设置 atlas.authentication.method=ldap。
角色(Role)定义权限集合,如 admin、data_steward、analyst。通过 Ranger 或 Atlas 插件管理角色。
权限分配将角色分配给用户或用户组,实现权限继承。遵循最小权限原则。
权限粒度可控制到类型级别(如能否创建 HiveTable)或实体级别(如能否编辑某表)。Ranger 提供更细粒度的控制。
API 权限REST API 调用受相同权限控制,未授权请求返回 403。服务账号需分配适当角色。

10.4 数据脱敏与审计日志

功能说明注意事项
数据脱敏(Masking)对敏感数据(如身份证、手机号)进行掩码处理(如显示为 ***)。由 Ranger 策略触发,Atlas 提供分类依据。
脱敏方式支持 nulling(置空)、hash(哈希)、mask(掩码)、encrypt(加密)等。根据合规要求选择合适方式。
动态脱敏查询时实时脱敏,原始数据仍安全存储。透明于用户,无需修改应用。
审计日志内容包括操作时间、用户、IP、操作类型(CREATE/UPDATE/DELETE)、目标实体、结果。用于安全事件调查和合规证明。
日志存储位置默认写入 logs/atlas-audit.log 文件。建议集成到集中式日志系统(如 ELK、Splunk)。
日志保留策略配置日志滚动和保留周期(如 90 天)。满足 GDPR、HIPAA 等法规要求。
审计查询可通过 Ranger 或外部工具查询审计日志。支持按用户、时间、操作类型过滤。

第十一章:高可用与性能调优

11.1 Atlas 高可用部署架构

架构组件说明注意事项
Atlas Server 集群部署多个 Atlas Server 实例,前端通过负载均衡器(如 Nginx、HAProxy)分发请求。确保所有实例配置一致,指向相同的后端存储。
共享存储层HBase 和 Solr 必须为集群模式,作为 Atlas Server 的共享状态存储。HBase 用于持久化元数据实体和关系,Solr 用于索引和搜索。
Kafka 高可用Kafka 集群需多副本、多分区,确保消息不丢失,支持故障转移。ATLAS_ENTITIES 主题建议至少 3 副本,防止 Hook 消息丢失。
ZooKeeper 集群HBase、Solr、Kafka 均依赖 ZooKeeper 进行协调服务,必须部署为奇数节点集群(如 3/5/7)。保障分布式系统的一致性。
负载均衡策略使用轮询或最少连接等策略分发 API 请求,避免单点过载。启用健康检查,自动剔除故障节点。
数据一致性所有写操作最终通过 HBase 保证强一致性,读操作可能短暂延迟。无单点故障,任一 Atlas Server 故障不影响整体服务。

11.2 HBase 与 Solr 性能优化建议

组件优化项说明注意事项
HBaseRegion 设计合理预分区,避免热点问题。根据 typeName 或 qualifiedName 前缀进行分区。
写入缓冲调整 hbase.hregion.memstore.flush.size 和 blockCache 大小。增大内存缓冲提升写入吞吐量。
压缩算法启用 Snappy 或 GZ 压缩减少存储空间和 I/O。权衡 CPU 开销与存储节省。
Compaction 策略选择合适的 Major/Minor Compaction 策略。减少读取延迟,避免 I/O 突刺。
客户端配置调整 hbase.client.scanner.caching 和重试次数。提升批量读取效率。
Solr分片与副本对 large collections(如 vertex_index)进行分片,并设置多副本。提升查询并发能力和容错性。
查询缓存启用 filterCache、queryResultCache 等。加速重复查询,特别是分类和类型过滤。
索引优化合理设计 schema,对常用查询字段建立索引。如 qualifiedName, typeName, classification。
删除策略配置 TtlDeleteCommitter 自动清理过期文档。防止索引无限增长。
JVM 调优为 Solr 分配足够堆内存,避免频繁 GC。建议 8GB+,根据数据量调整。

11.3 Atlas Server 参数调优

参数类别参数名称推荐值/说明注意事项
JVM-Xms / -Xmx4g ~ 8g(根据元数据规模)避免内存不足导致 OOM。
-XX:MetaspaceSize512m ~ 1g防止 Metaspace 耗尽。
GC 策略-XX:+UseG1GCG1 GC 适合大堆内存,降低停顿时间。
Kafka Consumeratlas.consumer.numThreads2 ~ 4提升消息消费并行度。
atlas.kafka.hook.group.id自定义 group id避免与其他环境冲突。
Server 线程池atlas.server.threadpool.size20 ~ 50根据并发请求数调整。
缓存atlas.cache.entity.ttl300s (5分钟)减少重复查询 HBase 的开销。
atlas.cache.guice.typecache.ttl600s缓存类型定义,提升 API 响应速度。
血缘分析atlas.lineage.batch.size100 ~ 500控制血缘图构建的批处理大小,平衡性能与内存。

11.4 大规模元数据管理实践

实践场景优化策略说明
海量实体导入分批提交 + 异步处理使用 /entity/bulk 接口,每批 100~500 实体,避免超时。
高频变更场景优化 Hook 发送频率避免在循环中频繁触发 Hook,可合并或异步上报。
复杂血缘图限制血缘深度查询时使用 depth=3 参数,避免返回过大图结构。
索引性能瓶颈按业务域拆分 Solr Collection如 finance_vertex_index, marketing_vertex_index。
备份与恢复定期备份 HBase 表使用 HBase snapshot 功能备份 ATLAS_ENTITY_AUDIT_EVENTS 和主数据表。
监控告警集成 Prometheus + Grafana监控 JVM、Kafka Lag、HBase RT、API Latency 等关键指标。
元数据生命周期定义冷热数据策略对历史或已删除实体归档,减少活跃索引大小。

第十二章:实战案例与最佳实践

12.1 企业级数据目录构建

实施步骤关键动作最佳实践
统一命名规范定义 qualifiedName 标准格式,如 {dataset}@{env}。强制所有系统遵循,确保全局唯一性和可解析性。
自动化采集部署 Hive/Spark/Kafka Hook,实现元数据自动同步。减少人工录入错误,保证实时性。
分类体系设计建立标准化标签体系(如业务域、数据等级、项目归属)。与数据治理委员会协同制定,确保一致性。
丰富元数据通过 UI 或 API 补充描述、负责人、数据字典等业务元数据。鼓励数据使用者参与协作。
搜索体验优化配置 Solr 同义词、拼写纠错,提升搜索准确率。定期收集用户反馈优化搜索逻辑。
集成数据质量在目录中展示数据质量评分和关键指标。让用户一眼识别可信数据集。

12.2 敏感数据识别与合规管理

场景解决方案效果
自动识别 PII开发规则引擎或 ML 模型,扫描列名/样本数据,自动打 PII 标签。大幅提升识别覆盖率和效率。
GDPR/CCPA 合规基于 DataSubject 分类,追踪个人数据流向,生成影响报告。满足数据主体权利请求(如被遗忘权)。
访问控制联动将 PII、PCI 等标签同步至 Ranger,实施动态脱敏和行过滤。实现”敏感数据,严格管控”。
审计追踪记录所有对敏感数据的访问和变更操作。满足合规审计要求。
分类传播配置 PII 标签沿血缘自动传播到下游表。防止敏感数据泄露到非受控区域。

12.3 血缘分析在数据治理中的应用

应用场景实施方法价值
影响分析变更某源表前,查看其前向血缘,评估对下游报表的影响。降低变更风险,避免业务中断。
问题溯源报表数据异常时,通过后向血缘快速定位源头错误。缩短排错时间,提升运维效率。
数据可信度评估分析实体的血缘路径长度、转换次数,评估其可信度。为数据估值提供依据。
ETL 作业优化分析血缘图,发现冗余计算或无效链路。优化数据管道,降低成本。
合规证明生成特定数据集的完整血缘报告,用于外部审计。证明数据处理过程的透明性和合规性。

12.4 Atlas 与数据质量、数据生命周期集成

集成方向集成方式最佳实践
数据质量(DQ)将 Great Expectations、Deequ 等工具的校验结果作为属性写入 Atlas 实体。在数据目录中直观展示 DQ Score 和失败规则。
创建 DataQuality 分类,标记高/低质量数据集。与 Ranger 联动,限制低质量数据的生产使用。
数据生命周期管理在实体上添加 Lifecycle 分类(如 active, archived, deleted)。定义自动流转规则,如 3 年未访问则归档。
与工作流引擎(Airflow)集成,执行归档/删除任务。实现生命周期策略的自动化执行。
在血缘分析中排除已归档实体,简化视图。保持血缘图的清晰和相关性。
统一治理平台构建以 Atlas 为核心的治理门户,集成 DQ、安全、生命周期模块。提供一站式数据治理体验,提升用户采纳率。