Apache Atlas为Hadoop提供了数据治理功能。Apache Atlas用作公共元数据存储,旨在在Hadoop堆栈内外交换元数据。Atlas与Apache Ranger的紧密集成使您能够在Hadoop堆栈的所有组件之间一致地定义、管理和治理安全性和合规性策略。Atlas向Data Steward Studio提供元数据和血缘、以支持跨企业数据整理数据。
Atlas是一个元数据管理和治理系统,旨在帮助您查找、组织和管理数据资产。Atlas在数据湖中创建对象和操作的“实体”或元数据表示。您可以将业务元数据添加到这些实体,以便您可以使用业务词汇表来更轻松地搜索特定资产。
Atlas读取收集的元数据的内容,以建立数据资产之间的关系。当Atlas接收查询信息时,它将记录查询的输入和输出,并生成血缘,该血缘可跟踪数据的使用方式和随时间变化的方式。数据转换的这种可视化使治理团队可以快速识别数据源,并了解数据和架构更改的影响。
Atlas管理您创建并用于增强数据资产元数据的分类和标签。您可以创建和组织分类和标签,以用于从标识数据清理阶段到记录用户评论和对特定数据资产的见解的任何事情。使用分类时,“ Atlas仪表板”使搜索、分组、报告和进一步注释您标记的实体变得容易。分类本身可以组织为层次结构,以使其更易于管理。
Atlas还提供了用于创建和维护业务本体以标记数据资产的基础架构。Atlas的“词汇表”包括“术语”,因此您可以为部门或组织范围内的词汇表建立商定的清单,以识别和管理数据。添加术语可以使您单击该术语所标识的实体的报告。
Atlas在Hadoop环境中作为独立服务运行。许多Hadoop数据处理和存储服务都包含Atlas附加组件,这些附加组件将服务活动的元数据发布到Kafka消息主题。Atlas读取消息并将其存储在JanusGraph中以对实体之间的关系建模。JanusGraph背后的数据存储区是HBase。Atlas将搜索索引存储在Solr中,以利用Solr的搜索功能。
存在针对Hive、Impala、Kafka、NiFi、Spark和Sqoop的预定义挂钩。
Atlas还提供了“桥接”,可为给定源中的所有现有数据资产导入元数据。例如,如果在Hive中创建数据库和表之后启动Atlas,则可以使用Hive桥接导入现有数据资产的元数据。桥接使用Atlas API导入元数据,而不是将消息发布到Kafka。
如果您需要挂钩或桥接来自动从另一个来源收集元数据,请使用Atlas Java API创建自定义的Atlas插件。
收集、创建和使用元数据的概念。
当您通过使用组织的业务词汇表来扩充生成的“技术”元数据时,Atlas元数据用于组织和查找数据的价值就会增加。这是您要执行的操作:
1.4. Atlas仪表盘之旅
快速介绍Atlas用户界面和术语。
Atlas用户界面是一个包含两个部分的元数据仪表板:
搜索面板上有三个用于搜索的选项卡:常规“搜索”选项卡和基于“分类”和“词汇表”术语的预定义搜索。在常规“搜索”选项卡中,从现有的元数据类型列表中进行选择以缩小搜索结果的范围。切换到高级搜索,您可以输入特定的搜索查询;基本搜索和高级搜索均可保存,以方便重复使用。
在分类选项卡中,选择一个分类将显示所有用该分类标记的实体。使用搜索框查找特定的分类、或浏览创建分类时定义的分类层次。
在词汇表选项卡中,选择一个术语将显示所有用该术语标记的实体。使用搜索框查找特定术语,或按词汇表浏览术语。您还可以使用类别视图找到特定的术语:浏览组织业务词汇表的层次结构;选择类别时,显示窗格会显示分配给该类别的术语。选择这些术语之一时,Atlas将显示与该术语关联的实体。
当您运行搜索并且Atlas返回结果时,您会看到符合搜索条件的实体的页面列表。从这里,您可以返回搜索选项,进一步优化搜索或使用控件来更改搜索结果的显示方式。
当您单击搜索结果中实体的链接时,Atlas将打开一个实体详细信息页面,其中包含为该实体收集的元数据。详细信息页面在选项卡中组织实体内容:
在群集服务中执行的操作会在Atlas中创建元数据。
Atlas为许多Hadoop集群服务提供了附加组件,以在该服务执行某些操作时收集元数据。Atlas插件或“挂钩”会收集一组预定义的信息,并将其发送到Atlas服务器。Atlas服务器通读元数据并创建实体,以表示由元数据描述的数据集和过程。Atlas可以为它处理的每个事件创建一个或多个实体。例如,当用户在HBase中创建名称空间时,Atlas将创建一个实体来表示新的HBase名称空间。当用户在HiveServer中运行查询时,Atlas可能会创建许多实体,包括描述查询本身的实体,查询所涉及的任何表,查询所涉及的每个表的每个列的实体,等等。
下表列出了默认情况下与Atlas集成的服务。对于每个服务,该表列出了Atlas确认的服务所产生的事件以及Atlas响应每个事件而产生的实体。请注意,事件与实体之间并不总是一对一的关系:从单个事件产生的实体取决于事件本身。
资源 | 确认的动作 | 创建/更新的实体 |
---|---|---|
HiveServer | ALTER DATABASE CREATE DATABASEDROP DATABASE | hive_db,hive_db_ddl |
ALTER TABLE CREATE TABLE CREATE TABLE as SELECT DROP TABLE | hive_process,hive_process_execution,hive_table,hive_table_ddl,hive_column,hive_column_lineage,hive_storagedesc,hdfs_path | |
ALTER VIEW ALTERVIEW_AS_SELECT CREATE VIEW CREATE VIEW AS SELECT DROP VIEW | hive_process,hive_process_execution,hive_table,hive_column,hive_column_lineage,hive_table_ddl | |
INSERT INTO (SELECT) INSERT OVERWRITE | hive_process,hive_process_execution | |
HBase | alter_async | hbase_namespace,hbase_table,hbase_column_family |
create_namespace alter_namespace drop_namespace | hbase_namespace | |
create table alter table drop table drop_all tables | hbase_table,hbase_column_family | |
alter table (create column family) alter table (alter column family) alter table (delete column family) | hbase_table,hbase_column_family | |
Impala* | CREATETABLE_AS_SELECT | impala_process,impala_process_execution,impala_column_lineage,hive_db hive_table_ddl |
CREATEVIEW | impala_process,impala_process_execution,impala_column_lineage,hive_table_ddl | |
ALTERVIEW_AS_SELECT | impala_process,impala_process_execution,impala_column_lineage,hive_table_ddl | |
INSERT INTO INSERT OVERWRITE | impala_process, impala_process_execution | |
Spark* | CREATE TABLE USING CREATE TABLE AS SELECT, CREATE TABLE USING ... AS SELECT | spark_process |
CREATE VIEW AS SELECT, | spark_process | |
INSERT INTO (SELECT), LOAD DATA [LOCAL] INPATH | spark_process |
*对于这些来源,Atlas从HMS收集相应的资产元数据。Atlas协调从每个来源的Kafka消息接收的实体元数据。
Atlas的模型表示集群数据资产和操作,并且足够灵活,可以让您表示其他来源的对象。
灵活的Atlas元数据模型使您可以表示对象及其之间的关系,从而可以生成数据湖图。使用Atlas,您可以创建预定义实体类型的新实例,并可以定义实体的新类型,以便可以表示来自其他数据源甚至不位于Hadoop中的服务的数据资产和操作。Atlas的组成部分是实体、关系、分类、枚举和结构。
实体是建模或表示数据资产或数据操作的属性的集合。实体是Atlas在搜索结果中返回或在谱系图中显示为节点的单位。您可以使用Atlas API更改模型以将属性添加到实体定义。标签被建模为给定实体实例上的属性;您可以将用户定义的属性添加到各个实体实例(不影响实体类型定义)。
关系描述了两个实体之间的联系。您可以使用自定义属性创建关系定义,以表示特定于流程的行为。对关系定义的更改需要通过Atlas API更改模型。
分类是可以与实体相关联的一组命名键/值对。分类与实体属性不同:
Atlas还支持定义自定义枚举和数据结构,类似于结构化编程语言中的那些构造。枚举可用于属性定义中以存储预定值的列表。可以在属性定义中使用struct来识别更复杂的数据类型。
Ranger策略可以使用标签来识别数据。Atlas分类被作为标签拉入Ranger。
您可以使用Atlas分类来通过Ranger驱动数据访问控制。Ranger提供基于资源和基于标签的访问控制策略。使用元数据标签而不是特定的资源名称可为您提供灵活性,并允许访问控制立即应用于新数据资产,而无需管理员干预。
您可以使用Atlas分类来控制用户对数据资产的访问,方法是使用Atlas分类来定义基于Ranger标签的访问控制策略。基于Ranger标签的策略可确保Hive和Impala之类的服务控制对特定数据资产的用户和组访问。Ranger策略可以使服务将掩码应用于列数据,因此用户可以看到部分数据或匿名数据之类的结果。为此,您可以在Atlas中定义分类。将分类与数据资产相关联,包括数据库、表、视图和列;然后定义对使用Atlas分类标记的数据资产起作用的策略。
可以使用分类的一些方法包括:
3.1 何时使用Atlas分类进行访问控制
基于资源和基于标签的策略以不同的方式有用。
Ranger提供基于资源的策略和基于标签的策略。下表提供了一些示例,说明了何时选择一种策略而不是另一种:
基于资源的策略 | 基于标签的策略 |
---|---|
控制对每种服务类型的数据资产的访问(每种数据资产有多个策略) | 控制对所有服务类型的数据资产的访问 |
控制对整个数据库的访问 | 控制对源表中列的访问,用户可以将其复制或转换为其他表 |
控制对长期存在的表的访问 | 通过设置有效日期来控制对数据的访问,直到对其进行审核/分类 |
控制对特定表中知名列的访问,这些列不会随时间变化 |
在Atlas中做一些准备工作,以使标签可用于创建Ranger策略。
请按照以下步骤在您的环境中设置基于标记的访问控制:
1. 确定要控制的数据,控制的对象以及控制方式。
如果您知道数据特征,但没有可靠的数据列名称,或者想向某些用户显示部分数据,请为该列分配分类,并在Ranger中设置基于标签的策略以应用掩码数据。
2. 在Atlas中创建分类,以描述何时应控制数据的触发器。
3. 将分类分配给Atlas数据资产。
4. 在Ranger中创建“基于标签的策略”。
5. 使用Hue或Zeppelin验证策略是否按预期工作。
您可以使用分类来控制对数据的访问的某些方式。
使用分类来控制数据:
4. 扩展Atlas以管理其他来源的元数据
您可以在Atlas中创建实体类型以表示数据资产,操作或来自默认来源以外的其他来源的其他类型的工件。
Atlas的数据模型设计得足够灵活,可以表示各种各样的数据资产及其生成过程。您可以设计自己的实体,以从Atlas中预定义的来源以外的来源收集元数据。创建实体的高级过程如下:
原文:https://docs.cloudera.com/runtime/7.0.3/concepts-governance.html