Apache Atlas 是一款开源的元数据管理和治理工具,并且提供了 REST API 对外接口,可以非常方便地接入到相应的数据平台系统中。Atlas 也提供 web 界面对元数据进行管理,企业可以对数据库元数据建立资产目录,并对这些资产进行分类和治理,为数据分析,数据治理提供高质量的「元数据」(可以理解成描述数据的数据)信息。
Atlas 主要功能
- 数据分类
定义、注释和自动捕获数据集和底层之间的关系元素包括源、目标和派生过程 - 安全审计
数据访问的日志审计 - 搜索和血缘关系
元数据信息及数据之间的血缘 - 安全与策略引擎
结合ApacheRanger来设置数据的访问权限
Atlas架构
从 Atlas 的架构中,可以看到 Atlas 所依赖的生态体系是异常庞大。因此对于整体系统中的外部引用也需要确保能够正常安装。
Atlas Core
- Type System : Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为“类型” 的定义组成。“类型” (类)的 实例被称为 “实体” 表示被管理的实际元数据对象。类型系统是一个组件,允许用户定义和管理类型和实体。由 Atlas 管理的所有元数据对象(例如Hive表)都使用类型进行建模,并表示为实体(类对象,一条数据)。
- Ingest / Export : Ingest 组件允许将元数据添加到 Atlas。类似地,Export 组件暴露由 Atlas 检测到的元数据更改,以作为事件引发,消费者可以使用这些更改事件来实时响应元数据更改。
- Graph Engine : 在内部,Atlas 通过使用图形模型管理元数据对象。以实现元数据对象之间的巨大灵活性和丰富的关系。图形引擎是负责在类型系统的类型和实体之间进行转换的组件,以及基础图形模型。除了管理图形对象之外,图形引擎还为元数据对象创建适当的索引,以便有效地搜索它们。
对于Graph底层气依赖的 JanusGraph, 其是一个开源的分布式图形数据库,可以处理大规模的图形数据,支持OLTP和OLAP操作,同时也支持多种后端存储引擎。JanusGraph提供了一个可扩展的架构,可以通过添加新的节点来增加容量和吞吐量,同时还支持图形分区和数据分片,可以在多个节点上存储和处理数据。JanusGraph还提供了丰富的图形算法和查询语言,可以用于构建各种类型的应用程序,如社交网络、知识图谱、推荐系统等。JanusGraph的主要特点包括高性能、可扩展性、可靠性和灵活性。
默认原生支持从以下源抽取元数据。
- HBase
- Hive
- Sqoop
- Storm
- Kafka
核心组件概念
Atlas 中主要有以下核心组件,这些需要我们着重了解。通过 REST API 自定义建模其实就是对以下组件的增删查改操作。
-
Type
元数据类型定义,这里可以是数据库,表,列等,还可以细分 mysql 表( mysql_table ),oracle 表( oracle_table )等,atlas自带了很多类型,如 DataSet,Process 等,一般情况下,数据相关的类型在定义类型的时候都会继承 DataSet,而流程相关的类型则会继承 Process,便于生成血缘关系。我们也可以通过调用 api 自定义类型。这是一切的起点,定义完类型之后,才能生成不同类型的元数据实体,生成血缘关系,我个人更喜欢把元数据类型称之为建模。 -
Classification
分类,通俗点就是给元数据打标签,分类是可以传递的,比如 A 视图是基于 A 表生成的,那么如果 A 表打上了 a 这个标签,A 视图也会自动打上 a 标签,这样的好处就是便于数据的追踪。 -
Entity
实体,表示具体的元数据,Atlas 管理的对象就是各种 Type 的 Entity。 -
Lineage
数据血缘,表示数据之间的传递关系,通过 Lineage 我们可以清晰的知道数据的从何而来又流向何处,中间经历了哪些操作,这样一旦数据出现问题,可以迅速追溯,定位是哪个环节出现错误。
Altas 使用一览
登陆界面
实体信息
血缘测试
结语
通过上述介绍,可以非常方便地了解 Atlas 的基本介绍,可以看出对于数据治理和数据血缘方面的管理可以通过 Atlas 来进处理。此外,通过 REST API 可以进行定制二次化开发,深度融合进现有基础架构。