最近有数据治理的需求,在研究apache Atlas时,发现atlas安装时依赖众多,不小心就会踩坑,真可谓是使用只需二分钟,安装却要两小时!现在把安装过程以及中间可能遇到的坑总结一下。
目录
2.1 修改配置文件 atlas-application.properties
3.2 拷贝配置文件atlas-application.properties
一、编译
1.1 下载源码
Atlas不提供安装包,需要下载源码包 ,自行编译打包。
此处出现坑一:
如果你目前使用的hive是2.x版本,就不建议你使用最新的2.2.0版本了,直接下载2.1.0版本,不然你可能会和我一样,趟过了众多的坑之后,终于安装成功,hive也集成好了,却最终发现hive表的血缘关系无法正常显示,你说你崩溃不?
1.2 修改pom文件中对应软件的版本
此处出现坑二:
因为我们的大数据环境是基于CDH-6.2.0,Atlas的索引打算用ElasticSearch来存,所以必须把pom文件中修改成对应的版本,尤其是ElasticSearch,默认是5.6.4。如果是用solr做索引的存储的话,记得修改solr的版本号。
源码解压后进入到apache-atlas-sources-2.1.0目录,然后编辑 pom.xml文件,修改如下部分对应cdh的版本,如下图所示:
重点修改hadoop.version,hbase.version,hive.version,elasticsearch.version
因为maven中央仓库里没有cdh相关的jar包,所以在pom文件中需要添加cloudera的镜像,在pom文件中找到repositories,然后添加cloudera的镜像地址 :
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
如下图所示:
1.3 修改源码
此处出现坑三:
atlas默认支持的hive是3.1版本,不修改源码的话编译会报错,编译不成功。
所需修改的源码有两处,一处是:
apache-atlas-sources-2.1.0/addons/hive-bridge/src/main/java/org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java
在第577行
String catalogName = hiveDB.getCatalogName() != null ? hiveDB.getCatalogName().toLowerCase() : null;
改为
String catalogName = null;
另一处是在:
apache-atlas-sources-2.1.0/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/AtlasHiveHookContext.java
在第 81行
this.metastoreHandler = (listenerEvent != null) ? metastoreEvent.getIHMSHandler() : null;
改为
this.metastoreHandler = null;
1.4 编译源码
此处出现坑四:
编译需要提前安装好jdk和maven环境,jdk需要jdk8_151以上,maven需要3.5.0以上,maven的仓库地址用官方地址就可以,不要用阿里云的地址,不然sqoop-1.4.6.2.3.99.0-195.jar这个依赖你可能会下载不下来。
jdk和maven环境搭建好以后,在apache-atlas-sources-2.1.0目录下执行
编译命令: mvn clean -DskipTests package -Pdist
编译的过程比较慢,大约需要40分钟,耐心等待编译完成,看到BUILD SUCCESS 信息,说明编译成功。
编译好的安装包在 apache-atlas-sources-2.1.0/distro/target 目录下,能看到一些打包好后的tar包。
其中apache-atlas-2.1.0-server.tar.gz 就是atlas的主程序,带hook字样的都是一些集成该模块需要的钩子插件。
二、安装
2.1 修改配置文件 atlas-application.properties
将apache-atlas-2.1.0-server.tar.gz 解压后,进入到apache-atlas-2.1.0/conf目录,编辑 atlas-application.properties 文件 。
- 修改hbase相关配置
atlas.graph.storage.hostname 修改成安装hbase的关联zookeeper地址。
- 修改ES相关配置
因为选择es存储atlas的索引,所以需要将atlas.graph.index.search.backend 改成elasticsearch
然后将 atlas.graph.index.search.hostname 配置成es集群的地址,如下图所示:
- 修改kafka相关配置
根据实际情况正确修改kafka的三个配置项。
atlas.kafka.data,atlas.kafka.zookeeper.connect,atlas.kafka.bootstrap.servers
- 修改atlas服务端口和访问地址(非必需)
atlas默认的端口是21000,和impala端口冲突,如果集群中有端口冲突则需要修改,否则不用修改。
修改配置项:atlas.server.http.port和atlas.rest.address
- 修改Audit hbase表 相关的zookeeper地址
修改配置项 atlas.audit.hbase.zookeeper.quorum ,和上面配置hbase的zookeeper保持一致即可。
2.2 修改 atlas-env.sh
在apache-atlas-2.1.0/conf目录下编辑atlas-env.sh
加入JAVA_HOME和hbase配置文件的路径信息:
export JAVA_HOME=/sata1/bigdata/apps/jdk1.8.0_181
export HBASE_CONF_DIR=/etc/hbase/conf
2.3 启动Atlas
修改atlas-application.properties和atlas-env.sh完成后,进入到apache-atlas-2.1.0/bin目录
然后执行启动命令: ./atlas_start.py
耐心等待启动完全完成,然后就可以在浏览器登录到配置的端口进行访问了,默认用户名密码都是admin
三、集成Hive
3.1 拷贝hive钩子程序包
解压hive钩子插件apache-atlas-2.1.0-hive-hook.tar.gz ,并将解压出来的hook和hook-bin目录拷贝到apache-atlas-2.1.0目录下。
3.2 拷贝配置文件atlas-application.properties
执行scp命令将atlas-application.properties拷贝到所有安装hive的服务器的 /etc/hive/conf目录下。
此处出现坑五:
因为在cdh中,如果修改了hive的配置并重启的话,/etc/hive/conf下的文件会被清空重新生成,拷过去的atlas-application.properties会被删除掉,因此需要将atlas-application.properties文件压缩到apache-atlas-2.1.0/hook/hive的atlas-plugin-classloader-2.1.0.jar中。
首先进入到 apache-atlas-2.1.0/conf目录下(重要,必须在此目录下!!!)
执行命令: zip -u ../hook/hive/atlas-plugin-classloader-2.1.0.jar ./atlas-application.properties
若如zip命令需要先安装好zip
3.3 拷贝hive外部依赖包
拷贝 apache-atlas-2.1.0/hook/hive目录下的 atlas-hive-plugin-impl ,atlas-plugin-classloader-2.1.0.jar , hive-bridge-shim-2.1.0.jar 到所有安装hive的服务器的
/opt/cloudera/parcels/CDH/lib/hive/lib目录和/opt/cloudera/parcels/CDH/lib/hive/auxlib目录下。(一定要拷贝到所有安装hive的服务器上!)
3.4 配置hive的环境变量
此处出现坑六:
需要在安装atlas的服务器上配置hive的环境变量,否则在第一次全量导入hive元数据的时候会报错找不到HIVE_HOME。
添加以下内容:
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export HIVE_CONF_DIR=/etc/hive/conf
export PATH=$HIVE_HOME/bin:$PATH
执行以下命令使配置生效:
source /etc/profile
3.5 修改hive的配置项
登录到cdh的页面,点击hive配置,然后搜索 hive-site.xml ,找到如下三个配置项:
hive-site.xml 的 Hive 服务高级配置代码段(安全阀)
hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)
hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)
然后给三个配置项分别添加配置,名称是:hive.exec.post.hooks ,值为:
org.apache.atlas.hive.hook.HiveHook,org.apache.hadoop.hive.ql.hooks.LineageLogger
此处出现坑七:
配置项hive.exec.post.hooks的值一定要添加上org.apache.hadoop.hive.ql.hooks.LineageLogger,否侧hive字段级别的血缘关系将无法显示!
如下图所示:
配置修改完后成保存,然后重启hive。
3.6 将hive元数据全量导入atlas
进入到 apache-atlas-2.1.0/hook-bin目录,然后执行命令: import-hive.sh
然后分别输入atlas的用户名和密码admin即可,等待导入完成,就可以在页面处看到hive的元数据信息了。