使用Atlas进行数据治理

技术

Apache Atlas 为 Hadoop 提供了数据治理功能。 Apache Atlas 用作公共元数据存储,旨在在 Hadoop 堆栈内外交换元数据。 Atlas 与 Apache Ranger 的紧密集成使您能够在 Hadoop 堆栈的所有组件之间一致地定义、管理和治理安全性和合规性策略。 Atlas 向 Data Steward Studio 提供元数据和血缘、以支持跨企业数据整理数据。

1. 什么是Apache Atlas?

Atlas 是一个元数据管理和治理系统,旨在帮助您查找、组织和管理数据资产。 Atlas 在数据湖中创建对象和操作的 “ 实体 ” 或元数据表示。您可以将业务元数据添加到这些实体,以便您可以使用业务词汇表来更轻松地搜索特定资产。

picture.image

1.1.Apache Atlas使用元数据创建血缘关系

Atlas 读取收集的元数据的内容,以建立数据资产之间的关系。当 Atlas 接收查询信息时,它将记录查询的输入和输出,并生成血缘,该血缘可跟踪数据的使用方式和随时间变化的方式。数据转换的这种可视化使治理团队可以快速识别数据源,并了解数据和架构更改的影响。

1.2. 添加到实体元数据使搜索更加容易

Atlas 管理您创建并用于增强数据资产元数据的分类和标签。您可以创建和组织分类和标签,以用于从标识数据清理阶段到记录用户评论和对特定数据资产的见解的任何事情。使用分类时, “ Atlas 仪表板 ” 使搜索、分组、报告和进一步注释您标记的实体变得容易。分类本身可以组织为层次结构,以使其更易于管理。

Atlas 还提供了用于创建和维护业务本体以标记数据资产的基础架构。 Atlas 的 “ 词汇表 ” 包括 “ 术语 ” ,因此您可以为部门或组织范围内的词汇表建立商定的清单,以识别和管理数据。添加术语可以使您单击该术语所标识的实体的报告。

1.3. Apache Atlas体系结构

Atlas 在 Hadoop 环境中作为独立服务运行。许多 Hadoop 数据处理和存储服务都包含 Atlas 附加组件,这些附加组件将服务活动的元数据发布到 Kafka 消息主题。 Atlas 读取消息并将其存储在 JanusGraph 中以对实体之间的关系建模。 JanusGraph 背后的数据存储区是 HBase 。 Atlas 将搜索索引存储在 Solr 中,以利用 Solr 的搜索功能。

picture.image

   存在针对Hive、Impala、Kafka、NiFi、Spark和Sqoop的预定义挂钩。

Atlas 还提供了 “ 桥接 ” ,可为给定源中的所有现有数据资产导入元数据。例如,如果在 Hive 中创建数据库和表之后启动 Atlas ,则可以使用 Hive 桥接导入现有数据资产的元数据。桥接使用 Atlas API 导入元数据,而不是将消息发布到 Kafka 。

如果您需要挂钩或桥接来自动从另一个来源收集元数据,请使用 Atlas Java API 创建自定义的 Atlas 插件。

1.3.1. 使用Apache Atlas进行数据管理

收集、创建和使用元数据的概念。

当您通过使用组织的业务词汇表来扩充生成的 “ 技术 ” 元数据时, Atlas 元数据用于组织和查找数据的价值就会增加。这是您要执行的操作:

  • 工具。 您可以使用标签、分类、属性和术语表将元数据添加到实体。该词汇表使您可以识别同义词,从而使来自不同团队的词汇不会干扰识别相同数据的方式。
  • 规划。 找出谁以及如何使用这些工具:针对要应用的元数据类型制定总体计划,针对如何应用以及谁可以应用它们设计一些约定。设计一些过程以监督元数据的收集,以确保结果一致和有用;识别同义词和反义词。
  • 例子。 本文档包括组织元数据的方法示例;描述如何针对特定用例进行优化的策略。

1.4. Atlas仪表盘之旅

快速介绍 Atlas 用户界面和术语。

Atlas 用户界面是一个包含两个部分的元数据仪表板:

  • 左侧的搜索面板。
  • 右侧的 “ 详细信息 ” 面板将在其中显示搜索结果,并在您深入特定实体时显示该实体的详细信息。每个详细信息页面都有一个标题部分和一系列选项卡式面板,所有这些面板都针对该实体类型的元数据。

picture.image

1.4.1. 搜索

搜索面板上有三个用于搜索的选项卡:常规 “ 搜索 ” 选项卡和基于 “ 分类 ” 和 “ 词汇表 ” 术语的预定义搜索。在常规 “ 搜索 ” 选项卡中,从现有的元数据类型列表中进行选择以缩小搜索结果的范围。切换到高级搜索,您可以输入特定的搜索查询;基本搜索和高级搜索均可保存,以方便重复使用。

picture.image 在分类选项卡中,选择一个分类将显示所有用该分类标记的实体。使用搜索框查找特定的分类、或浏览创建分类时定义的分类层次。

在词汇表选项卡中,选择一个术语将显示所有用该术语标记的实体。使用搜索框查找特定术语,或按词汇表浏览术语。您还可以使用类别视图找到特定的术语:浏览组织业务词汇表的层次结构;选择类别时,显示窗格会显示分配给该类别的术语。选择这些术语之一时, Atlas 将显示与该术语关联的实体。

当您运行搜索并且 Atlas 返回结果时,您会看到符合搜索条件的实体的页面列表。从这里,您可以返回搜索选项,进一步优化搜索或使用控件来更改搜索结果的显示方式。

picture.image

1.4.2. 查看实体详细信息

当您单击搜索结果中实体的链接时, Atlas 将打开一个实体详细信息页面,其中包含为该实体收集的元数据。详细信息页面在选项卡中组织实体内容:

  • 资产: “ 属性 ” 选项卡包括为此实体收集的系统元数据以及添加的所有用户定义的属性。它还包含应用于实体的标签列表。您可以使用任何 “ 字符串 ” 数据类型属性中的值来使用自由文本搜索来找到此实体。
  • 血缘: Atlas UI 为每个实体显示一个血缘图。该图将显示在实体详细信息页面的 “ 血缘 ” 选项卡中。对于数据资产实体,血缘图显示了该实体是操作的输入还是输出。对于流程实体,血缘图显示了该操作使用的或生产的所有输入和输出实体。
  • 关系:该选项卡将与该实体关联的其他实体列为 “ 关系 ” 。您可以将相关实体的列表显示为列表或图形。使用此选项卡可在实体之间导航。特殊关系类型 “ 输入 ” 和 “ 输出 ” 包括组成谱系的实体。
  • 分类:分类选项卡显示与此实体关联的分类(也在详细信息页面的顶部显示)。它允许您从实体中添加,更新或删除分类。请注意,要管理分类,您需要被授予执行分类操作的特权。
  • 审核:图集记录了实体元数据发生的更改。更改列在实体详细信息页面的 “ 审核 ” 选项卡中。审核显示 Atlas 更新实体的元数据的时间,包括以下更改:
  • 添加或删除分类
  • 实体属性已更新
  • 添加,更新或删除标签
  • 添加,更新或删除关系
  • 词汇表术语已添加或删除
  • Schema :当当前实体是表时,将显示 “Schema” 选项卡并列出表中的列。使用此选项卡可深入查看特定列或向列添加分类(无需打开该列的详细信息页面即可添加分类)。

在群集服务中执行的操作会在 Atlas 中创建元数据。

Atlas 为许多 Hadoop 集群服务提供了附加组件,以在该服务执行某些操作时收集元数据。 Atlas 插件或 “ 挂钩 ” 会收集一组预定义的信息,并将其发送到 Atlas 服务器。 Atlas 服务器通读元数据并创建实体,以表示由元数据描述的数据集和过程。 Atlas 可以为它处理的每个事件创建一个或多个实体。例如,当用户在 HBase 中创建名称空间时, Atlas 将创建一个实体来表示新的 HBase 名称空间。当用户在 HiveServer 中运行查询时, Atlas 可能会创建许多实体,包括描述查询本身的实体,查询所涉及的任何表,查询所涉及的每个表的每个列的实体,等等。

下表列出了默认情况下与 Atlas 集成的服务。对于每个服务,该表列出了 Atlas 确认的服务所产生的事件以及 Atlas 响应每个事件而产生的实体。请注意,事件与实体之间并不总是一对一的关系:从单个事件产生的实体取决于事件本身。

| 资源 | 确认的动作 | 创建 / 更新的实体 | | HiveServer | ALTER DATABASE CREATE DATABASE

DROP 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 消息接收的实体元数据。

2 Atlas元数据模型概述

Atlas 的模型表示集群数据资产和操作,并且足够灵活,可以让您表示其他来源的对象。

灵活的 Atlas 元数据模型使您可以表示对象及其之间的关系,从而可以生成数据湖图。使用 Atlas ,您可以创建预定义实体类型的新实例,并可以定义实体的新类型,以便可以表示来自其他数据源甚至不位于 Hadoop 中的服务的数据资产和操作。 Atlas 的组成部分是实体、关系、分类、枚举和结构。

实体 是建模或表示数据资产或数据操作的属性的集合。实体是 Atlas 在搜索结果中返回或在谱系图中显示为节点的单位。您可以使用 Atlas API 更改模型以将属性添加到实体定义。标签被建模为给定实体实例上的属性;您可以将用户定义的属性添加到各个实体实例(不影响实体类型定义)。

关系 描述了两个实体之间的联系。您可以使用自定义属性创建关系定义,以表示特定于流程的行为。对关系定义的更改需要通过 Atlas API 更改模型。

分类 是可以与实体相关联的一组命名键 / 值对。分类与实体属性不同:

  • 分类不是实体元数据的一部分,因此它们是一种在不更新实体类型定义的情况下将元数据添加到实体的方法。
  • 可以将分类添加到任何实体类型。
  • Atlas可以通过血缘关系传播分类。
  • 可以在 Ranger 中使用分类来驱动访问策略。

Atlas 还支持定义自定义枚举和数据结构,类似于结构化编程语言中的那些构造。 枚举 可用于属性定义中以存储预定值的列表。可以在属性定义中使用 struct 来识别更复杂的数据类型。

3. 使用标签控制数据访问

Ranger 策略可以使用标签来识别数据。 Atlas 分类被作为标签拉入 Ranger 。

您可以使用 Atlas 分类来通过 Ranger 驱动数据访问控制。 Ranger 提供基于资源和基于标签的访问控制策略。使用元数据标签而不是特定的资源名称可为您提供灵活性,并允许访问控制立即应用于新数据资产,而无需管理员干预。

picture.image

您可以使用 Atlas 分类来控制用户对数据资产的访问,方法是使用 Atlas 分类来定义基于 Ranger 标签的访问控制策略。基于 Ranger 标签的策略可确保 Hive 和 Impala 之类的服务控制对特定数据资产的用户和组访问。 Ranger 策略可以使服务将掩码应用于列数据,因此用户可以看到部分数据或匿名数据之类的结果。为此,您可以在 Atlas 中定义分类。将分类与数据资产相关联,包括数据库、表、视图和列;然后定义对使用 Atlas 分类标记的数据资产起作用的策略。

可以使用分类的一些方法包括:

  • 将属性添加到 Atlas 分类中,以为单独的上下文定义单独的行为。例如,您可以将列标记为 “ 国家 ID” ,然后根据该信息应用策略。您可以在 “ 国民 ID” 分类中添加一个属性,该属性描述要应用于国民 ID 显示的规则,例如 “ 从 ... 申请规则 ” : “ EU” 或 “ 从 ... 申请规则 ” : “ JPN” )。 Ranger 策略可以使用属性值将不同的掩码模式应用于数据。
  • Atlas 血缘可以将分类从一列传播到后来根据相同数据创建的列。传播分类时,基于这些分类构建的 Ranger 策略将应用于数据的新位置。无需干预即可确保将原始数据的访问控制应用于新副本。
  • 如果将 Ranger 设置为拒绝对所有者以外的新数据的访问,则可以使用标签显示此数据(仅访问分类数据)。

3.1 何时使用Atlas分类进行访问控制

基于资源和基于标签的策略以不同的方式有用。

Ranger 提供基于资源的策略和基于标签的策略。下表提供了一些示例,说明了何时选择一种策略而不是另一种:

基于资源的策略
基于标签的策略
控制对每种服务类型的数据资产的访问(每种数据资产有多个策略)
控制对所有服务类型的数据资产的访问
控制对整个数据库的访问
控制对源表中列的访问,用户可以将其复制或转换为其他表
控制对长期存在的表的访问
通过设置有效日期来控制对数据的访问,直到对其进行审核
/
分类
控制对特定表中知名列的访问,这些列不会随时间变化

3.2. 基于标签的访问控制如何工作

在 Atlas 中做一些准备工作,以使标签可用于创建 Ranger 策略。

请按照以下步骤在您的环境中设置基于标记的访问控制:

  1. 确定要控制的数据,控制的对象以及控制方式。

    如果您知道数据特征,但没有可靠的数据列名称,或者想向某些用户显示部分数据,请为该列分配分类,并在 Ranger 中设置基于标签的策略以应用掩码数据。

  • 跨多个服务的相同资源。在 Ranger 中设置基于标签的策略。请注意,基于资源的策略适用于单个服务。
  • 整个数据库。在 Ranger 中设置基于资源的策略。
  • 表。在 Ranger 中设置基于资源的策略。
  • 列。在 Atlas 中标记列,然后在 Ranger 中创建基于标记的策略,即使将其转换为其他表,也可以控制对该数据的访问。
  1. 在 Atlas 中创建分类,以描述何时应控制数据的触发器。

  2. 将分类分配给Atlas数据资产。

  3. 在Ranger中创建“基于标签的策略”。

  4. 使用Hue或Zeppelin验证策略是否按预期工作。

3.3 使用分类控制数据访问的示例

您可以使用分类来控制对数据的访问的某些方式。

使用分类来控制数据:

  • 有效期或有效期。
  • 敏感数据屏蔽
  • 按部门或地区划分访问权限

4. 扩展Atlas以管理其他来源的元数据

您可以在 Atlas 中创建实体类型以表示数据资产,操作或来自默认来源以外的其他来源的其他类型的工件。

Atlas 的数

据模型设计得足够灵活,可以表示各种各样的数据资产及其生成过程。您可以设计自己的实体,以从 Atlas 中预定义的来源以外的来源收集元数据。创建实体的高级过程如下:

| 想想如何从源头建模核心资产。预定义的实体类型从 DataSet 和 Process 实体类型继承基本属性。使用这些常规类型作为起点,可以确保您的实体可以在 Atlas 仪表板中显示血缘,并利用模型中内置的其他预定义规则和层次结构。也就是说,新的实体类型不限于此数据 / 流程模型。 | |

| 定义要在数据资产之间跟踪的关系。要使您的实体出现在 Atlas 仪表板的血缘图中,请包括 “ inputToProcesses” 和 “ outputFromProcesses” 的关系属性。 | |

| 列出要针对每种实体类型跟踪的所有元数据。如有必要或方便,定义枚举或结构来描述专门针对您的实体的元数据。 | |

| 使用 REST API 或创建 Atlas 客户端以在 Atlas 中构建实体类型定义。(构建 JSON ) | |

| 通过手动填充类型中的元数据来验证模型是否符合您的期望方式,从而验证模型。您可以使用 Atlas 仪表板或 REST API 进行此操作,然后测试血缘,搜索和基于 Ranger 标签的策略是否达到了您的期望。 | |

| 编写一个钩子,一个或两个桥接,以自动从源中收集元数据。 |

原文:https://docs.cloudera.com/runtime/7.0.3/concepts-governance.html

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动大数据容器化构建与落地实践
随着字节跳动旗下业务的快速发展,数据急剧膨胀,原有的大数据架构在面临日趋复杂的业务需求时逐渐显现疲态。而伴随着大数据架构向云原生演进的行业趋势,字节跳动也对大数据体系进行了云原生改造。本次分享将详细介绍字节跳动大数据容器化的演进与实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论