1、浅谈Apache Atlas-元数据管理入门
什么是元数据
元数据(Metadata)是描述数据的数据,为了帮助用户了解数据的来源、特性、结构、用途等。在数据管理和数据治理中起着至关重要的作用,助于提高数据的质量、可发现性、可访问性和可使用性。
元数据管理的主要流程
- 元数据收集:从各种数据源(如:数据库、应用程序、文件系统等)使用自动化脚本或者工具收集元数据。
- 元数据存储:将收集到的元数据存储到中原元数据仓库中。
- 元数据管理:能够对元数据进行分类、标签和权限管理等,合理的对元数据进行组织和管理,确保元数据的一致性和可操作性。
- 元数据使用:提供查询和搜索功能,帮助用户快速找到所需数据资源,可以通过元数据支持数据治理、数据质量管理和数据生命周期管理。
- 元数据维护:定期更新和维护元数据,确保元数据的准确性和时效性。处理元数据的变更请求,确保元数据的一致性和完整性。
什么是 Apache Atlas
Apache Atlas 是一套可扩展的核心基础治理服务,使企业能够有效地、高效地满足 Hadoop 生态的数据治理需求,并允许与整个企业数据生态系统集成。提供开放的元数据管理和治理功能,以构建其数据资产目录,对这些资产进行分类和管理。
Atlas架构
自下向上看,整体分成四个模块:Core、Integration、Metadata Source、Apps
Core:由三个组件构成
- Type System:Atlas 允许用户为他们想要管理的元数据对象定义一个模型。在 Type System 中定了 Attribute、Type、Entity 三者共同来描述一个模型。一个或一组 Attribute 标识一个 Type ,Type 的实例就是 Entity。如下代码,是 Type 为 hive_table 的定义。
{
"category": "ENTITY",
"guid": "", // 全局的唯一标识
"createdBy": "cloudera-cdh",
"updatedBy": "cloudera-cdh",
"createTime": 1729057881000,
"updateTime": 1729057881000,
"version": 1,
"name": "hive_table", // 作为 Type 下的唯一标识
"description": "hive_table",
"typeVersion": "1.1",
"options": {
"schemaElementsAttribute": "columns"
},
"attributeDefs": [ // Attribute 组信息
{
"name": "db",
"typeName": "hive_db", // hive_db Attribute 的定义
"isOptional": false,
"cardinality": "SINGLE",
"valuesMinCount": 1,
"valuesMaxCount": 1,
"isUnique": false,
"isIndexable": false,
"includeInNotification": false
},
{
"name": "createTime", // createTime Attribute 的定义
"typeName": "date",
// ....
},
{
"name": "columns", // columns Attribute 的定义
"typeName": "array<hive_column>",
// ....
}
// 此处省略多个属性定义
],
"superTypes": [ // 父类信息
"DataSet"
],
"subTypes": [] // 子类信息
}
- 从上述 Type 定义我们可以这么理解
- Type 类似于 Java 代码中的类
- Attribute 类似于 Java 代码中类的属性
- Entity 类似于 Java 代码中类的实例对象
既上述 hive_table 的 Type 可以转变为下述 Java 代码
public class hive_table extends DataSet{
private Db hive_db;
private Date createTime;
private List<hive_column> columns;
private List<superTypes> superTypes;
private List<subTypes> subTypes;
// ....
}
-
Graph Engine:图形引擎,Atlas 采用图模型存储和管理元数据,利用图形引擎的特性能够更灵活、高效的处理元数据对象之间的关系,以及适当的添加索引优化,以便有效地进行检索。如架构图所示,使用 JanusGraph 存储元数据对象。
-
Ingest / Export:数据的摄取以及导出,允许将元数据添加到 Atlas。同时可以将 Atlas 检测到的元数据变更事件导出,下游消费者可以通过监听变更事件来实时响应元数据更改。
Integration:通过两种方式管理 Atlas 中的元数据
- API<HTTP/REST>:Atlas 公开了所有功能的 REST API,可以通过 API 的方式对 Type 和 Entity 进行创建、更新、删除、查询、发现和管理。
- Messaging:基于 Kafka 消息队列的形式与 Atlas 集成。既可用于将元数据对象传达给 Atlas,也可用于使用 Atlas 中的元数据更改事件来进一步拓展程序,推荐使用该方式,因其与 Atlas 的功能进行了解耦,从而实现更好地可伸缩性、可靠性等。元数据变更的事件是基于 Hook 和 Atlas 写入不同的 Kafka topic 中。
Metadata Sources:Atlas 提供对现有组件元数据集成的支持
-
Atlas 支持与许多开箱即用的元数据源集成,当前 Atlas 支持从以下来源摄取(采集)和管理元数据:HBase、Hive、Sqoop、Storm、Kafka
-
Atlas 集成意味着两件事:
-
Atlas 提供了从这些组件摄取元数据的方式(在某些情况下以实时或批处理方式)。
-
Atlas 中定义了这些组件的元数据模型
-
APPS:Atlas 提供的可视化功能以及应用
- Admin UI:一个Web可视化组件,允许数据管理员和数据科学家通过图形界面的形式发现和标注元数据。这里最重要的是搜索界面和类似SQL的查询语言,可用于查询 Atlas 管理的元数据类型和对象。Admin UI 上的各个功能是使用 Atlas 的 REST API 来构建的。
- Tag Based Policies:Apache Ranger 是 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件进行了广泛集成。通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略,以实现有效的治理。Ranger会消费来自Atlas元数据变更事件的消息通知。