Atlas现在被企业使用的越来越多,我们可能听说过,但是具体它是什么,能干什么的,我们可能不清楚。
Atlas是什么?
Apache Atlas是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop生态系统集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。
上面我们或许听着比较懵圈,都是啥,元数据治理是啥?为啥要元数据治理?元数据不就是用来描述数据的数据,我们这么理解没有错的,不过这个是其中重要的一项。比如Hive的元数据,那是需要第三方数据库的,大多存储到mysql中。为啥又出来一个Atlas,它能管理Hive的元数据吗?别说,还真可以的。那为啥要用Atlas来管理。这就涉及到我们的第二个问题,Atlas能干什么?。
Atlas能干什么?
其实很多大数据组件都有元数据管理,比如:
Hive保存在外部数据库中,比如Mysql
Hadoop元数据保存在Namenode,元数据的存储格式:data/hadoopdata/目录下
name:元数据存储目录
namenode存储元数据的存储目录
Kakfa元数据一般保存在zookeeper中
等等以上,我们的元数据每个大数据组件都有保存的地方,为啥还需要Atlas。
上面元数据是为了功能而生,都是单独的系统,散落在各个组件中,而我们能不能把这些元数据统一管理,而且数据的变化我们也能看到那就更好了。而且如果能把我们整个集群的大数据组件的元数据我们都能看到,那就更好了。看到这些有什么好处?比如我们想找到Hive有哪些表,想查看我们数据是怎么来的。这时候数据管理工具就产生了--Atlas,用来管理元数据的平台。
我们知道了Atlas是什么,能干什么,可能是比较通透了。可是还不够详细,那么接下来我们看看Atlas有哪些功能,有什么特点。这里直接借用《大数据治理与安全从理论到开源实践》书中内容。
上面其实如果我们没有接触过大数据治理或则说没有涉及过大数据治理,还是比较懵的。对于元数据交换,这个没什么,就是一个数据的导出。数据的血统,这个就比较难以理解了。后面我们举例子。数据的可视化,相信大家应该也不陌生,快速数据建模,这个其实也不难理解,我们可以整体看到元数据,利于我们整体把握。丰富的API,这个属于它的功能了。
对于特性,我们这里不一一说了。这里介绍下比较难以理解的血统关系。我们这里以Hive为例
创建两张hive表,然后通过表的join创建一张新表:
- 创建一张hive表存储以数组形式存储tweet文本中的单词
CREATE TABLE words_array AS SELECT tweet_id AS id, split(text,' ') AS words FROM tweets;
- 创建一张hive表将文本中的数组切分成单独的单词
CREATE TABLE tweet_word AS SELECT id AS id, word FROM words_array LATERAL VIEW explode(words) w as word;
- 通过对上述表的Join操作创建新的表
CREATE TABLE word_join AS SELECT tweet_word.id, tweet_word.word, sentiment_dictionary.rating FROM tweet_word LEFT OUTER JOIN sentiment_dictionary ON (tweet_word.word=sentiment_dictionary.word);
在Atlas中,上述操作生成的word_join表的血缘关系图如下所示:
我们明白了Atlas的一些功能和特性,下面我们来看看Atlas的架构,以便让我们有一个更形象的认识。
上面主要打通大家对Atlas的理解,如果大家想更系统的学习Atlas,推荐下面资料:
大数据平台-元数据管理系统解析
https://www.jianshu.com/p/9fe3ff2bbe99
大数据治理与安全从理论到开源实践
https://www.aboutyun.com/forum.php?mod=viewthread&tid=28225
元数据与数据治理|大数据治理 Apache atlas
https://www.songma.com/news/txtlist_i37131v.html
Hadoop的元数据治理--Apache Atlas
https://www.jianshu.com/p/4eee91bc926c