数仓的元数据管理系统(数据治理系统)-Apach Atlas
一.如果公司没有这样的管理系统,如何去管理你的这些数据资产?
用word文档或者用excel,记录哪个表有哪些字段,什么时候创建的,作者谁,这个表是什么表等等.
这些都是很原始的手段,管理效率很低,
所有需要一套软件,来实现这些数据资产的管理.
大公司一般会开发这样一个系统.就是一个javaee程序
二.数仓元数据管理系统: 数仓中各种数据资产 (表,库,目录等描述) 的描述信息的管理系统
现在apache开源了一个通用的数仓元数据管理系统-atlas
atlas主要存那些数据资产的描述信息
atlas就是一个javaweb或者javaee程序
三.atlas结构:
1.atlas的底层存储: janusGraph 图数据库 – (依赖于habase 和 solr)
2.atlas的核心功能层: core --相当于javaee里面的service层.
核心功能中有ingest和export
- ingest就是从外面把元数据录入进来,录到atlas的存储里面来
- export就是把里面的元数据导出去
3.atlas对外提供服务的一层 (api层): integration --相当于javaee里面的controller层
对外暴露一个地址,外面就可以用http去请求这个地址,就可以用atlas的功能了
4.外界要将元数据 录入(注入) 到atlas中去,需要通过kafka进行对接,ingest会到kafka进行消费,然后将消费到的元数据 形成图数据库的格式存到图数据库中.然后api这层就可以到图数据库中去查.
四.atlas只是元数据的管理,并不能对hive进行操作和运算.
五.atlas的功能:
1.数据的分类管理classifications
hive中有好多表,然后我在atlas上面定义了好几种类别:app埋点日志数据,微信小程序埋点日志数据等,可以把某个表分到某个类别,我只要点击某个分类,就能展现这个类别下所有的表.
2.审计audit
atlas可以捕获你对那些数据的任何操作.
在hive中insert 或者是 建表 或者是 drop,atlas都能捕获到这些行为,然后形成一些记录
以后就可以做一些审计,比如可以查看某个表在什么时候,哪个用户做了哪些操作还有细节.
3.搜索你的数据资产search
可以去搜索,比如搜hive的表,hive的库,hive的处理过程,还可以搜到kafka里有什么东西,还有你的关系型数据库,还有sqoop一些抽取过程的描述.还有hdfs的一些目录等等.
都是一些描述.
可以根据类别,关键字,数据资产类型等条件来快捷搜索相关元数据
4.血缘lineage
可以很方便的去查看数据资产的血缘
比如这个a表是怎么来的,是由insert的一个计算过程来的,insert into 是从哪里读的,是从b表读的,b表是从哪来的,是从create external…语句建的,然后数据是从load data…这个运算过程来的.加载hdfs中哪个目录的数据等等,a表又衍生出来好多表,通过什么语句.
是以图的形式展现出来.
六.atlas是怎么知道hive中有这些表的?
atlas中的元数据不是天生就有的,需要从外面去注入,可以调用他的api来传入,
也就是说,可以自己写一个程序,提供一个界面,让我们可以在界面上录入数据资产相关的元数据信息,然后调用atlas的api接口,传给atlas去保存.
这样公司开发的工作量太大,那还不如不用atlas,直接自己完整的开发一套元数据管理系统.
好在atlas为hadoop体系中的组件,提供了钩子程序,来自动探测组件中的数据描述信息,然后传入到了atlas.
比如他就为hive开发了钩子
这个钩子可以自动探测hive中的任何操作,形成元数据信息,自动传入atlas.