ATLAS是什么?
ATLAS是HADOOP生态的数据治理和元数据管理的服务框架,是一组可扩展的核心基础治理服务集,使企业能够有效且高效地满足HADOOP生态中的合规性要求,并允许与整个企业数据生态系统集成。Apache ATLAS为组织提供了开放的元数据管理和治理功能,以建立其数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产协助开发的能力。
ATLAS的应用场景是什么?
随着企业的发展,企业产生的业务数据日益增多,不同业务线的数据可能在不同种的数据库中存储,最终会汇集到数据仓库中进行整合分析。如果想要追踪数据来源,理清数据之间的关系将会是一件异常复杂的事情,如果某个环节出了问题,追溯的成本将会成倍增加。于是 ATLAS就在这种背景下产生了,通过它,我们可以非常方便的管理元数据,并且可以追溯表级别,列级别之间的关系(血缘关系),可以非常直观的展示各个实体之间的关系,为企业的数据资产提供强有力的支撑和保障。
主要体现在元数据管理、数据分级分类、数据审计、数据血缘、信息脱敏和图化展示等六大场景,同时支持HADOOP生态的安全策略(RANGER)。
ATLAS整体架构
①. MetaSource Sources:元数据源,ATLAS支持与许多现成的元数据源进行集成,目前支持从HBase、Hive、Sqoop、Storm和Kafka中提取和管理元数据,通过安装对应的HOOK中间件完成元数据源与ATLAS的对接;
②. Apps:应用层,它主要包括基于RANGER的权限管理策略、WEB客户端以及业务分类这三大核心功能。用户通过Atlas Admin UI可以完成对元数据的查询和血缘展示;
③. Integration:融合层,也可以叫统一接口层,提供了HTTP协议的接口和基于KAFKA的发布订阅模式的消息接口,用于和ATLAS的对接;
④. Core:核心层,主要包括数据导入/导出引擎、类型系统以及图引擎。
- 【Ingest/Export】,用户可以通过Ingest/Export组件,将元数据添加到ATLAS中,也可以将元数据导出;
- 【TypeSyetem】,TypeSyetem称为“实体”的“类型”实例,它表示受管理的实际元数据对象,用户可以通过该组件将想要管理的元数据对象定义成模型,简单来说用于将ATLAS所管理的元数据进行分类;
- 【图引擎】,ATLAS使用图模型持久化所管理的元数据对象,底层采用JanusGraph实现,ATLAS的所有数据最终都会转换成图存储中的顶点vertex、边edge和属性property三种元素,JanusGraph以HBASE作为底层存储;
- 【Metadata Store<Hbase>】,元数据使用HBASE存储;
- 【Index Store<Solr>】,全文检索数据库,和ES具有相同的功能,当时ATLAS也支持ES,使用SOLR来创建索引。
JanusGraph整体架构
ATLAS的原理
ATLAS通过内部提供的脚本读取数仓中的数据库结构,生成数据模型,存储到 ATLAS的 元数据引擎中,同时通过 HOOK的方式监听数仓中的数据变化,分析执行的SQL语句,从而生成表与表,列与列的血缘关系依赖,将关系进行存储和展示。ATLAS提供了SHELL脚本可以直接读取HIVE的表结构等元数据信息,并将这些信息同步到 ATLAS的存储引擎中,自动生成元数据模型,同时ATLAS提供了HiveHook,可以监听HIVE的数据变化,根据HIVE执行的HQL,推断出数据与数据之间的关系,生成血缘关系图。
ATLAS的术语
-
Type,又叫类型系统,它是一个组件,允许用户定义和管理类型和实体。用于表示和定义如何存储并访问特定类型的元数据对象,类型表示了所定义元数据对象的一个或多个特征的集合。类型可以是数据库,表,列等,还可以细分为 mysql 表( mysql_table ),oracle 表( oracle_table ),hive表(hive_table),hbase表(hbase_table)等,ATLAS自带了很多类型,如 DataSet,Process 等,一般情况下,与数据相关的类型在定义类型的时候都会继承 DataSet,与流程相关的类型则会继承 Process,便于生成血缘关系。也可以通过调用API自定义类型,定义完类型之后,才能生成不同类型的元数据实体,生成血缘关系,也可以把元数据类型称之为模型。允许用户为他们想要管理的元数据对象定义一个模型,该模型由称为 “类型” 的定义组成。被称为 “实体” 的 “类型” 实例表示被管理的实际元数据对象。
-
Classification,分类,通俗点就是给元数据打标签,分类是可以传递的,比如 A 视图是基于 A 表生成的,那么如果 A 表打上了 TA这个标签,A 视图也会自动打上TA标签,这样的好处就是便于数据的追踪,主要是便于更好的组织和管理元数据信息,可以将某个实体挂在某个分类下。
-
Glossary,术语表,是ATLAS提供的除了分类以外的另外一种分类、组织和管理元数据的方式,由类别(这个和前面的Classification是不一样的)和术语两层结构组成。也可以理解为除了分类以外的从另一个维度进行分类,一般一个术语就是一个单词。比如:将公司的员工按部门进行划分,这可以理解为分类;而公司的员工又可以分为前端工程师、后端工程师、系统架构师等,这些“前端工程师、后端工程师、系统架构师”就叫术语,可以将某个实体挂在某个术语下。术语除了与类别关联,还可以和分类进行关联。也就是说可以在ATLAS的UI上把某个术语挂在某个分类下。
-
Entity,实体,表示具体的元数据,ATLAS管理的对象就是各种 Type 的 Entity。
-
Lineage,数据血缘,表示数据之间的传递关系,通过 Lineage 我们可以清晰的知道数据的从哪里来到哪里去,中间经历了哪些操作和步骤,便于数据追溯,和问题定位。
ATLAS的可视化展示
搜索发现:
数据血缘:
类型定义:
实体图化: