最近我们想借助Apache Atlas的REST API做一个元数据管理平台,因此就搭建了一套Atlas的环境,由于我们的大数据平台是CDH平台,集成Atlas的资料很少,所以在构建Atlas 环境的时候也遇到了不少坑,所以特整理此篇文来记录一下。

1. Apache Atlas 简介

Apache Atlas是一个可伸缩的核心数据基础治理服务组件,为我们提供了开放元数据管理和数据治理的功能,自动构建数据资产的目录,对这些资产进行分类和治理,并提供了UI界面和REST API,让我们更直观的看到数据流转的过程以及数据的血缘关系。

2. 组件安装

由于CDH 5.12.1版本的大数据组件版本较低,所以这里选用的Atlas早期版本0.8.4.

2.1 各组件版本

  • CDH 5.12.1
  • Hbase 1.2.0(cdh内置)
  • Solr 5.5.1(额外安装)
  • Zookeeper 3.4.5(cdh内置)
  • Kafka 0.10(cdh内置)
  • Hadoop 2.6.0(cdh内置)
  • Hive 1.1.0 (cdh内置)
  • Atlas 0.8.4(额外安装)

除了 Solr 和 Atlas ,其他的都是CDH平台内置的,所以只需安装Solr和Atlas即可。

2.2 编译Atlas

官网只提供Atlas源码,安装时需要自行编译,从https://atlas.apache.org 处下载自己需要的源码包,然后就开始编译了(提前设置好Maven镜像源)。

tar zxvf apache-atlas-0.8.4-sources.tar.gzmv apache-atlas-sources-0.8.4 atlascd atlasmvn clean -DskipTests install#外置HBase & Solr编译方式mvn clean -DskipTests package -Pdist#内置HBase & Solr编译方式mvn clean -DskipTests package -Pdist,embedded-hbase-solr

这里需要注意的是,有几个依赖包会下载失败,解决办法就是手动下载并安装到Maven本地仓库或者设置依赖包的镜像源。

编译好之后,在atlas/distro/target下就能看到编译好的二进制包。

CDH 升级 hive 和 spark cdh apache_kafka

2.3 组件安装

  • Solr的安装

        Atlas 0.8.4 依赖的Solr是5.5.1版本的,选择3台服务器,将Solr安装包解压,然后修改配置文件,这里需要注意的是,为了防止Solr 将文件写到 ZooKeeper 根目录下,我们需要手动修改一下Solr以及Atlas的配置(这里跟官方文档不一样):

vim bin/solr.in.sh然后修改以下配置:ZK_HOST="cdh02:2181,cdh03:2181,cdh01:2181/solr"

也就是在ZK_HOST后加上路径/solr。

另外,我们还需要手动增加ZooKeeper的命名空间,通过zkCli在ZooKeeper中创建/solr节点,进入zookeeper客户端手动执行:

create /solr "solr"

如果不手动创建这个 solr 节点的话,启动 Solr 就会报错:

A chroot was specified in ZkHost but the znode doesn't exist. \  cdh02:2181,cdh03:2181,cdh01:2181/solr

上述操作完成之后就可以启动 Solr 了,然后就可以在Zookeeper客户端看到Solr在Znode中的元数据信息:

[zk: localhost:2181(CONNECTED) 4] ls /[cluster, configs, brokers, data, admin, isr_change_notification, dubbo, mycat, rmstore, solr, consumers, hive_zookeeper_namespace_hive, hbase, controller, zookeeper, yarn-leader-election, hadoop-ha, controller_epoch, druid, kafka-manager, config, kylin][zk: localhost:2181(CONNECTED) 5] ls /solr[configs, overseer, aliases.json, live_nodes, collections, overseer_elect, security.json, clusterstate.json][zk: localhost:2181(CONNECTED) 6] ls /solr/live_nodes[cdh05:8983_solr, cdh04:8983_solr, cdh03:8983_solr]

在Solr的Web页面(http://${host}:8983,host是任意一台solr主机)也可以看到相关信息:

CDH 升级 hive 和 spark cdh apache_cdh 安装_02

除了上边的设置,还需要修改一下时区,要不然日志以及Solr中的记录都是用的UTC时间:

SOLR_TIMEZONE="Asia/Shanghai"
  • Atlas的安装

      将编译好的Atlas二进制文件,解压到/data/software/atlas下,0.8.4版本Atlas 的graph 索引只能放在solr中,还不支持ElasticSearch,1.0.0版本才支持graph 索引放在ElasticSearch中,因为我们前面把solr的在zookeeper中的信息目录设置在了/solr节点下,所以我们需要设置zookeeper-url后加上/solr

如下(这里与官方文档也不一样):

atlas.graph.index.search.solr.zookeeper-url=cdh01:2181,cdh02:2181,cdh03:2181/solr

3. Atlas 与 Hive 集成

因为Hive是CDH集成的,所以这里跟官方文档提供的方法也不太一样。

第一步,修改atlas的配置文件

######### Hive Hook Configs #######atlas.hook.hive.synchronous=falseatlas.hook.hive.numRetries=3atlas.hook.hive.queueSize=10000atlas.cluster.name=primary

第二步,将Atlas与Hive的集成依赖jar包放在Hive的classpath下。

大部分资料都是说设置 HIVE_AUX_JARS_PATH,我也在CM界面设置了,但是不起作用,后来就想了一个更加简单的办法,也不用修改配置文件,因为CDH集成的Hive本身也有一个auxlib 目录"/opt/cloudera/parcels/CDH/lib/hive/auxlib",我们只需要将集成jar包放在hive的auxlib下就可以了:

CDH 升级 hive 和 spark cdh apache_cdh 安装_03

我这里是做了一个软连接,也是可以的。

第三步,将 atlas-application.properties 压缩到 atlas-plugin-classloader-0.4.8.jar 内:

注意:必须是同级目录,atlas-application.properties前边不能加路径

zip -u atlas-plugin-classloader-0.4.8.jar  atlas-application.properties

这是因为CDH平台管理的Hive在运行时,会复制一份conf下关于hive的配置文件到process目录下,Hive在运行的时候就会因为读不到atlas-application.properties配置而报错。

第四步,配置hive-site.xml

hive.exec.post.hooks    org.apache.atlas.hive.hook.HiveHook

这里也有需要注意的点:

CDH 升级 hive 和 spark cdh apache_solr_04

如上图,两个hive-site.xml选项都配置上,这样在Hue以及服务器客户端(即命令行)都可以使Atlas监听Hive的事件。

4. Atlas 与 Solr 集成

将Atlas的conf目录下的solr文件夹复制到Solr集群各节点的安装目录下

cp -r /data/software/atlas/conf/solr /data/software/solr

然后修改文件名:

cd /data/software/solrmv solr apache_atlas_conf

如图$ATLAS_HOME:

CDH 升级 hive 和 spark cdh apache_CDH 升级 hive 和 spark_05

如图$SOLR_HOME:

CDH 升级 hive 和 spark cdh apache_CDH 升级 hive 和 spark_06

然后在$SOLR_HOME下执行:

bin/solr create -c vertex_index -d apache_atlas_conf -shards 3 -replicationFactorbin/solr create -c edge_index -d apache_atlas_conf -shards 3 -replicationFactor 2bin/solr create -c fulltext_index -d apache_atlas_conf -shards 3 -replicationFactor 2

然后登陆Solr的Web控制台(http://${solrhost}:8983)就能看到如下界面,:

CDH 升级 hive 和 spark cdh apache_solr_07

5. Atlas 与 Kafka 集成

直接修改配置即可,这里需要注意的是zookeeper的URL也需要指定节点/kafka

vim atlas-application.properties#########  Notification Configs  #########atlas.notification.embedded=falseatlas.kafka.data=${sys:atlas.home}/data/kafkaatlas.kafka.zookeeper.connect=cdh02:2181,cdh03:2181,cdh01:2181/kafkaatlas.kafka.bootstrap.servers=cdh02:9092,cdh03:9092,cdh04:9092atlas.kafka.zookeeper.session.timeout.ms=4000atlas.kafka.zookeeper.connection.timeout.ms=2000atlas.kafka.enable.auto.commit=true

另外我们也可以从配置文件里看出其他有关kafka的配置,这里也可以按需修改:

atlas.kafka.auto.commit.interval.ms=1000atlas.kafka.hook.group.id=atlasatlas.kafka.enable.auto.commit=falseatlas.kafka.auto.offset.reset=earliestatlas.kafka.session.timeout.ms=30000atlas.kafka.poll.timeout.ms=1000atlas.notification.create.topics=trueatlas.notification.replicas=1atlas.notification.topics=ATLAS_HOOK,ATLAS_ENTITIESatlas.notification.log.failed.messages=trueatlas.notification.consumer.retry.interval=500atlas.notification.hook.retry.interval=1000

虽然配置文件里配了可以自动创建topic,为了便于管理,我们最好还是手动创建一下,这两个topic——ATLAS_HOOK,ATLAS_ENTITIES。

当然,Atlas也给我们提供了创建这两个topic的脚本:

bin/atlas_kafka_setup.py

6. Atlas 与 Hbase 集成

vim atlas-application.properties#修改atlas存储数据主机atlas.graph.storage.hostname=cdh02:2181,cdh03:2181,cdh04:2181#########  Entity Audit Configs  #########atlas.audit.hbase.zookeeper.quorum=cdh02:2181,cdh03:2181,cdh04:2181

将Hbase的配置软连接至/data/software/atlas/conf/hbase

cd /data/software/atlas/conf/hbaseln -s /etc/hbase/conf conf

然后配置HBase配置文件路径

cd /data/software/atlas/confvim atlas-env.sh#添加HBase配置文件路径export HBASE_CONF_DIR=/data/software/atlas/conf/hbase/conf

7. 启动并使用 Atlas

首先需要重启一下大数据集群内的相关组件,使配置生效。

进入Hive客户端,执行如下命令,检查Hive配置是否生效:

set hive.exec.post.hooks;set hive.aux.jars.path;

CDH 升级 hive 和 spark cdh apache_CDH 升级 hive 和 spark_08

Atlas也可以配置HA,我这里仅仅只配置一个单节点,具体细节可参考官网,另外这里也有需要注意的,Atlas默认的端口是21000,CDH平台的Impala也用到了这个端口,为了避免端口冲突,我这里修改了为了21001端口:

## Server port configurationatlas.server.http.port=21001#########  Server Properties  #########atlas.rest.address=http://cdh05:21001

一切准备好后就可以启动Atlas了:

bin/atlas_start.py

等待服务启动成功后,然后登陆http://cdh05:21001 就可以看到登陆界面了,账户名密码都是admin,登陆。

CDH 升级 hive 和 spark cdh apache_docker 单节点 cdh_09

首次启动,Atlas 内是没有Hive的元数据的,第一次需要手动导入

bin/import-hive.sh

可以查看logs下的import-hive.log,查看元数据是否导入成功。

元数据导入后,就可以在Atlas中看到hive中的数据了,测试一下,查询hive库:

CDH 升级 hive 和 spark cdh apache_kafka_10

元数据导入之后,在没有执行SQL之前,是看不到表的血缘关系的,所以我们就创建一张表测试一下,先创建一张表,然后join多张表插入数据,然后打开Atlas界面就可以看到实时生成的血缘关系图了:

CDH 升级 hive 和 spark cdh apache_kafka_11

总结

到此,Atlas环境基本已经安装完成了,接下来就可以愉快的调用Atlas的REST API来构建自己的应用了。

https://atlas.apache.org/0.8.4/api/v2/index.html