导读

在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题,大部分只是单纯的对数据进行了处理,而数据的血缘、分类等等却很难实现,市场上也急需要一个专注于数据治理的技术框架,这时Atlas应运而生。

▐  Atlas的定义:

Apache Atlas是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心功能。

Atlas支持各种Hadoop和非Hadoop元数据类型,提供了丰富的Rest Api进行集成,对数据血缘的追溯达到了字段级别,对权限也有很好的控制。

▐  Atlas的架构原理:

❑  核心组件:

(1)Core

Ingest/Export(采集导出组件):Ingest组件允许将元数据添加到Atlas;Export组件暴露由Atlas检测到的元数据更改,以作为事件引发,消费者可以使用这些更改事件来实时响应元数据更改。

Type System(类型系统):Atlas允许用户为他们想要管理的元数据对象定义一个模型。类型系统是一个组件,允许用户定义和管理类型和实体。由Atlas管理的所有元数据对象(如Hive表)都使用类型进行建模,并表示为实体。

Graph Engine(图形引擎):Atlas在内部通过图形引擎来管理元数据对象,以实现元数据之间的巨大灵活性和丰富的关系。Graph Engine是负责在Type System中的类型和实体之间进行转换的组件,以及基础图形模型。除了管理图形对象之外,图形引擎还为元数据对象创建适当的索引,以便有效进行搜索。

JanusGraph(图数据库):用来存储元数据对象。默认情况下,元数据存储配置为HBase,索引存储配置为Solr。

(2)Integration

API:Atlas的所有功能都可以通过Rest Api提供给最终用户,允许创建、更新和删除类型和实体。它也是查询和发现通过Atlas管理的类型和实体的主要方法。

Messaging:除了API之外,还可以选择使用基于Kafka的消息接口与Atlas集成。这对于将元数据对象传输到Atlas以及Atlas使用可以构建应用程序的元数据更改事件都非常有用。

(3)Metadata Source

Atlas支持与许多元数据源的集成,目前支持以下数据源获取和管理元数据:hive、sqoop、storm、falcon。

(4)Applications

Atlas Admin UI:是一个基于Web的应用程序,提供了搜索界面和类Sql的查询语言,可以用来查询由Atlas管理元数据类型和对象。Admin UI使用Atlas的Rest API来构建其功能。

Tag Based Policies::Apache Ranger 是针对 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件具有广泛的集成。通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略,以实现有效的治理。Ranger 是由 Atlas 通知的元数据更改事件的消费者。

Business Taxonomy:从元数据源获取到 Atlas 的元数据对象主要是一种技术形式的元数据。为了增强可发现性和治理能力,Atlas 提供了一个业务分类界面,允许用户首先定义一组代表其业务域的业务术语,并将其与 Atlas 管理的元数据实体相关联。业务分类法是一种 Web 应用程序,目前是 Atlas Admin UI 的一部分,并且使用 REST API 与 Atlas 集成。

▐   Atlas API

主要是对Type、Entity、Attribute这3个构件的增删改查操作,里面封装了很多配置,留下API和Admin UI供外部使用。

Type:Atlas中的“类型”是一个定义,说明如何存储并访问特定类型的元数据对象。类型表示一个特征或一个特征集合,这些属性定义了元数据对象。具有开发背景的用户将识别类型的相似性,以面向对象编程语言的“Class”定义或关系的“table schema”数据库。

Entity:Atlas中的一个“实体”是类“Type”的特定值或实例,因此表示特定的元数据对象。回指我们的面向对象的类比编程语言,“instance”是某个“Class”的“Object”。

Attribute:属性定义在复合metatypes中,如Class和Struct。可以简单将属性称为具有名称和metatype值。

►  例子1:使用Type定义一个Hive table,并具有相关的attribute

Name: hive_table

MetaType: Class

SuperTypes: DataSet

Attributes:

name: String (name of the table)

db: Database object of type hive_db

owner: String

createTime: Date

lastAccessTime: Date

comment: String

retention: int

sd: Storage Description object of type hive_storagedesc

partitionKeys: Array of objects of type hive_column

aliases: Array of strings

columns: Array of objects of type hive_column

parameters: Map of String keys to String values

viewOriginalText: String

viewExpandedText: String

tableType: String

temporary: Boolean

►  例子2:一个Entity的定义

id: "9ba387ddfa76429cb791ffc338d3c91f"

typeName: “hive_table”

values:

name: “customers”

db: "b42c6cfcc1e742fda9e6890e0adf33bc"

owner: “admin”

createTime: "20160620T06:

13:28.000Z"

lastAccessTime: "20160620T06:

13:28.000Z"

comment: null

retention: 0

sd: "ff58025f685441959f753a3058dd8dcf"

partitionKeys: null

aliases: null

columns: ["65e2204f6a234130934a9679af6a211f",

"d726de70faca46fb9c99cf04f6b579a6",

...]

parameters: {"transient_lastDdlTime": "1466403208"}

viewOriginalText: null

viewExpandedText: null

tableType: “MANAGED_TABLE”

temporary: false

►  例子3:

(1)获取所有的types

GET http://atlasserverhost:port/api/atlas/types

GET http://atlasserverhost:port/api/atlas/types?type=STRUCT|CLASS|TRAIT

(2)获取某一个type

GET http://atlasserverhost:port/api/atlas/types / {type_name}

(3)创建新type

POST http://atlasserverhost:port/api/atlas/type

(4)创建新entity

http://atlasserverhost:port/api/atlas/entities (entities:是一个数组)

(5)获取一个entity

GET http://atlasserverhost:port/api/atlas/ entities /{guid}   (guid是entity的id)

(6)获取一个包含某个attribute(属性)的entity

GET http://atlasserverhost:port/api/atlas/entities?type={type_name}&p roperty={unique_attribute_name}&value={unique_attribute_value

(7)更新entity的一个attribute属性

POST http://atlasserverhost:port/api/atlas/entities/{GUID}

❑  血缘关系

Json中每两个Table(entity)之间需要一个Process进行连接,形成一条血缘关系图,首末两端使用inputs,outputs进行entity关联。

{

"entity":{

"typeName":"Process",

"attributes":{

"qualifiedName":"table_03@datag@10.10.66.30",

"createdBy":"caozqaAPI",

"createTime":"2017-08-25T13:15:25.369Z",

"updatedBy":"caozqaAPI",

"updateTime":"2017-08-25T14:12:45.246Z",

"name":"table_01",

"comment":"rdbms_table API insert test",

"description":"rdbms_table  手动输入",

"owner":"caozqa",

"type":"table",

"contact_info":"table_03_info",

"inputs":[{

"guid": "eddcde3c-92a2-4cfc-86d1-6ea43f6497b0",

"typeName": "rdbms_table"

}],

"outputs":[{

"guid": "f438d921-ff4c-4838-bdca-3b868bbed825",

"typeName": "rdbms_table"

}]

}

}

}

代码中可以找到一个Process类,该类继承自Asset类型,所以自带有name,owner,description,quailifiedName四种属性,它自己特有的inputs和outputs表示该过程的输入输出,它是Atlas血缘管理中所有类型的超类,在概念上,它可以用于表示任何数据变换操作。

例如,将原始数据的 hive 表转换为存储某个聚合的另一个 hive 表的 ETL 过程可以是扩展过程类型的特定类型。流程类型有两个特定的属性,输入和输出。输入和输出都是 DataSet 实体的数组。

因此,Process 类型的实例可以使用这些输入和输出来捕获 DataSet 的 lineage 如何演变,例如hive_process,sqoop_process 类型,在rdbms中直接使用Process 来存储血缘关系。

►  查询API的方式,采用base验证,get请求:

http://ip:port/api/atlas/v2/lineage/58182d3b-0777-4297-aae8-949368ef7bc5

总结:这一篇文章中介绍了Atlas相关的基础知识及架构原理,我们可以了解到Atlas的Rest API使用以及数据血缘相关的治理。

参考资料:

https://www.jianshu.com/p/4eee91bc926c

https://www.lagou.com/lgeduarticle/72927.htm

想了解更多关于人工智能的资讯

欢迎关注公众号:普适极客

技术11期:Atlas的概念你了解多少?相关推荐

  1. 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...

    No.11 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第11期&l ...

  2. 一周XX思考(第11期)

    大家好,这里记录,我每周碰到的,或想到的,引起触动,或感动的,事物的思考.这是 [一周XX思考] 的第11期,不见得都对,但开始思考总是好的. 极客时间与纸书 写书的时候,有的部分知识,为了" ...

  3. 新课程教学杂志新课程教学杂志社新课程教学编辑部2022年第11期目录

    新课程教学杂志新课程教学杂志社新课程教学编辑部2022年第11期目录 核心素养     基于任务群的高中语文大单元教学实践研究--以"杜甫沉郁顿挫诗风赏析"的单元教学为例 蒋梅; ...

  4. 高级转录组分析和R数据可视化第11期(报名线上课还可免费参加线下课2020.6)

    福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组.Python课程和转录组的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次线下课 ...

  5. 高级转录组分析和R数据可视化第11期(课程推迟,可先报名,时间另行告知)

    封面来源:https://www.zhihu.com/question/304747766 常规转录组是我们最常接触到的一种高通量测序数据类型,其实验方法成熟,花费较低,是大部分CNS必备的技术,以后 ...

  6. 刘偲:AI+艺术 | 青源 Talk 第 11 期

    活动议程 日期:1月13日(周四) 时间 主题 14:30-14:35 开场简介 黄高  清华大学自动化系副教授.博导,青源会会员 14:35-15:20 AI+艺术 刘偲 北航人工智能研究院教授.博 ...

  7. 《强化学习周刊》第11期:强化学习应用之模拟到真实

    No.11 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在模拟到真实领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人 ...

  8. java md5加密解密_技术09期:数据安全之加密与实现

    前言:大数据时代,每个人的生活中都不存在所谓的绝对"秘密",通过网络上的数据信息可以分析出一个人生活的各种痕迹.因此,保障大数据信息安全至关重要. 本文主要介绍了散列算法.对称加密 ...

  9. 2020年日历电子版(打印版)_2020年第11期印花世界电子版/手机版,欢迎在线免费阅读!...

    点击上方蓝字,记得关注我们! <印花世界>第11期电子版/手机版 在线免费轻松浏览,方便快捷! 电脑版: http://www.mhshj.com/zazhi/2020-11.html手机 ...

最新文章

  1. 科大星云诗社动态20210306
  2. 基于Xml 的IOC 容器-分配路径处理策略
  3. 《好未来编程题》求和
  4. python变量贡献率排序_3.2.5 贡献度分析
  5. linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
  6. 安装卡主_智能温室四周玻璃的安装学问还这么多
  7. 让MySQL速度提升3倍的19种优化方式
  8. 【Oracle】Rman备份策略
  9. hashmap的负载因子为什么是0.75而不是其他值或者1
  10. discuz 官方站 php 开源论坛,Discuz! 官方站-PHP 开源论坛 - Powered by Discuz! | x.discuz.net contacts...
  11. 事件声音和提示 注册表全攻略
  12. 2021年安全员-A证报名考试及安全员-A证考试报名
  13. 软件工程测试题(雨课堂学堂在线选择题汇总)
  14. 第二十二篇玩转【斗鱼直播APP】系列之弹出房间界面
  15. 6个在线正则表达式工具
  16. 面试总结(四)——如涵
  17. ORacle空间数据
  18. 覆盖式理解Android 消息处理机制(带源码解析)
  19. 为什么你和你喜欢的网站会感到痛苦如果“禁止跟踪”法案得到通过
  20. linux同时开启两个端口,linux下squid开多个端口的办法

热门文章

  1. 免费报名 | 机器学习的第二次入门(入群有福利)
  2. 浏览器输入「xxxxhub」的背后.....
  3. HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?
  4. Spring Boot 打包不同环境配置与 Shell 脚本部署
  5. CMS垃圾收集器小实验之CMSInitiatingOccupancyFraction参数
  6. ELK教程2:Kibana的安装
  7. 机器学习实践:了解数据核心的通用方法!
  8. 深度学习需要掌握的 13 个概率分布(附代码)
  9. 【numpy学习笔记】数组的创建和基本运算
  10. 完全基于Transformer的目标检测器,ICLR匿名论文实现视觉、检测统一