1.Atlas概述 1.1 Apache Atlas 的主要功能随着公司数据仓库的建设,数仓hive表愈来愈多,如何管理这些表?
经调研,Atlas成为了我们的选择对象,本文是Atlas实战记录,感谢尚硅谷的学习视频
元数据管理和治理,提升团队间对于数据资产的协作功能
Atlas官网地址:https://atlas.apache.org/
文档查看地址:https://atlas.apache.org/2.1.0/index.html
下载地址:https://www.apache.org/dyn/closer.cgi/atlas/2.1.0/apache-atlas-2.1.0-sources.tar.gz
2.1 安装环境准备Atlas安装分为:集成自带的Hbase + Solr;集成外部的Hbase + Solr。通常企业开发中选择集成外部的Hbase + Solr,方便项目整体进行集成 *** 作。
以下是Atlas所以依赖的环境及集群规划:各组件版本为我服务器版本,后面需要编译Atlas
1.在每台节点创建系统用户solr
sudo useradd solr sudo echo solr | sudo passwd --stdin solr [hadoop@hadoop101 ~]# sudo useradd solr [hadoop@hadoop101 ~]# sudo echo solr | sudo passwd --stdin solr [hadoop@hadoop102 ~]# sudo useradd solr [hadoop@hadoop102 ~]# sudo echo solr | sudo passwd --stdin solr [hadoop@hadoop103 ~]# sudo useradd solr [hadoop@hadoop103 ~]# sudo echo solr | sudo passwd --stdin solr
2.解压solr-8.11.1.tgz到/u/module目录,并改名为solr
[hadoop@hadoop101 ~]# tar -zxvf /u/software/21.Atlas/20.Solr/solr-8.11.1.tgz -C /u/module/ [hadoop@hadoop101 ~]# mv /u/module/solr-8.11.1/ /u/module/solr
3.修改solr配置文件
修改/u/module/solr/bin/solr.in.sh文件中的以下属性
ZK_HOST="hadoop101:2181,hadoop102:2181,hadoop103:2181"
4.分发solr
[hadoop@hadoop101 ~]# xsync /u/module/solr
5.修改solr目录的所有者为solr用户
[hadoop@hadoop101 ~]# sudo chown -R solr:solr /u/module/solr [hadoop@hadoop102 ~]# sudo chown -R solr:solr /u/module/solr [hadoop@hadoop103 ~]# sudo chown -R solr:solr /u/module/solr
6.启动solr集群
1)启动Zookeeper集群
[hadoop@hadoop101 ~]# zk.sh start
2)启动solr集群
出于安全考虑,不推荐使用root用户启动solr,此处使用solr用户,在所有节点执行以下命令启动solr集群
[hadoop@hadoop101 ~]# sudo -i -u solr /u/module/solr/bin/solr start [hadoop@hadoop102 ~]# sudo -i -u solr /u/module/solr/bin/solr start [hadoop@hadoop103 ~]# sudo -i -u solr /u/module/solr/bin/solr start
出现 Happy Searching! 字样表明启动成功。
说明:上述警告内容是:solr推荐系统允许的最大进程数和最大打开文件数分别为65000和65000,而系统默认值低于推荐值。如需修改可参考以下步骤,修改完需要重启方可生效,此处可暂不修改。
(1)修改打开文件数限制
修改/etc/security/limits.conf文件,增加以下内容
* soft nofile 65000 * hard nofile 65000
(2)修改进程数限制
修改/etc/security/limits.d/20-nproc.conf文件
* soft nproc 65000
(3)重启服务器
我这边在之前搭建集群时就已经修改好了
7.访问web页面
默认端口为8983,可指定三台节点中的任意一台IP,http://hadoop101:8983
提示:UI界面出现Cloud菜单栏时,Solr的Cloud模式才算部署成功。
如果此处Status为Red,那么可以修改zk配置
vim /u/module/zookeeper-3.5.7/conf/zoo.cfg
# 加入 4lw.commands.whitelist=mntr,conf,ruok2.1.2 安装Atlas2.1.0
由于Log4j2漏洞问题,建议直接调到第4章,编译Atlas源码,然后进行安装配置
1.把apache-atlas-2.1.0-server.tar.gz 上传到/hadoop101的/u/software目录下
2.解压apache-atlas-2.1.0-server.tar.gz 到/u/module/目录下面
[hadoop@hadoop101 software]# tar -zxvf /u/software/21.Atlas/19.Atlas/apache-atlas-2.1.0-server.tar.gz -C /u/module/
3.修改apache-atlas-2.1.0的名称为atlas
[hadoop@hadoop101 ~]# mv /u/module/apache-atlas-2.1.0 /u/module/atlas2.2 Atlas配置 2.2.1 Atlas集成Hbase
1.修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数
43行 vim下输入:43即可定位修改,后文同
atlas.graph.storage.hostname=hadoop101:2181,hadoop102:2181,hadoop103:2181
2.修改/u/module/atlas/conf/atlas-env.sh配置文件,增加以下内容
export Hbase_CONF_DIR=/u/module/hbase/conf2.2.2 Atlas集成Solr
1.修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数
atlas.graph.index.search.backend=solr atlas.graph.index.search.solr.mode=cloud # 93行 atlas.graph.index.search.solr.zookeeper-url=hadoop101:2181,hadoop102:2181,hadoop103:2181
2.创建solr collection
[hadoop@hadoop101 ~]# sudo -i -u solr /u/module/solr/bin/solr create -c vertex_index -d /u/module/atlas/conf/solr -shards 3 -replicationFactor 2 [hadoop@hadoop101 ~]# sudo -i -u solr /u/module/solr/bin/solr create -c edge_index -d /u/module/atlas/conf/solr -shards 3 -replicationFactor 2 [hadoop@hadoop101 ~]# sudo -i -u solr /u/module/solr/bin/solr create -c fulltext_index -d /u/module/atlas/conf/solr -shards 3 -replicationFactor 22.2.3 Atlas集成Kafka
修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数
# 121行 atlas.notification.embedded=false atlas.kafka.data=/u/module/kafka/data atlas.kafka.zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka atlas.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:90922.2.4 Atlas Server配置
1.修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数
######### Server Properties ######### # 213 atlas.rest.address=http://hadoop101:21000 # If enabled and set to true, this will run setup steps when the server starts atlas.server.run.setup.on.start=false ######### Entity Audit Configs ######### atlas.audit.hbase.zookeeper.quorum=hadoop101:2181,hadoop102:2181,hadoop103:2181
2.记录性能指标,进入/u/module/atlas/conf/路径,修改当前目录下的atlas-log4j.xml
[hadoop@hadoop101 conf]# vim atlas-log4j.xml
#去掉如下代码的注释2.2.5 Kerberos相关配置
若Hadoop集群开启了Kerberos认证,Atlas与Hadoop集群交互之前就需要先进行Kerberos认证。若Hadoop集群未开启Kerberos认证,则本节可跳过。
1.为Atlas创建Kerberos主体,并生成keytab文件
[root@/hadoop101 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey atlas//hadoop101" [root@/hadoop101 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/atlas.service.keytab atlas//hadoop101"
2.修改/u/module/atlas/conf/atlas-application.properties配置文件,增加以下参数
atlas.authentication.method=kerberos atlas.authentication.principal=atlas//hadoop101@EXAMPLE.COM atlas.authentication.keytab=/etc/security/keytab/atlas.service.keytab2.2.6 Atlas集成Hive
1.安装Hive Hook
1)解压Hive Hook
[hadoop@hadoop101 ~]# tar -zxvf /u/software/21.Atlas/19.Atlas/apache-atlas-2.1.0-hive-hook.tar.gz -C /u/software/21.Atlas/19.Atlas
2)将Hive Hook依赖复制到Atlas安装路径
[hadoop@hadoop101 ~]# cp -r /u/software/21.Atlas/19.Atlas/apache-atlas-hive-hook-2.1.0/* /u/module/atlas/
3)修改/u/module/hive/conf/hive-env.sh配置文件
注:需先需改文件名
[hadoop@hadoop101 ~]# mv hive-env.sh.template hive-env.sh
增加如下参数
export HIVE_AUX_JARS_PATH=/u/module/atlas/hook/hive
2.修改Hive配置文件,在/u/module/hive/conf/hive-site.xml文件中增加以下参数,配置Hive Hook。
hive.exec.post.hooks org.apache.atlas.hive.hook.HiveHook
3.修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数
######### Hive Hook Configs ####### # 同步设为false atlas.hook.hive.synchronous=false # 重试次数 atlas.hook.hive.numRetries=3 # 线程池长度 atlas.hook.hive.queueSize=10000 # 集群名字 atlas.cluster.name=primary
4)将Atlas配置文件/u/module/atlas/conf/atlas-application.properties
拷贝到/u/module/hive/conf目录
[hadoop@hadoop101 ~]# cp /u/module/atlas/conf/atlas-application.properties /u/module/hive/conf/2.3 Atlas启动
1.启动Atlas所依赖的环境
1)启动Hadoop集群
(1)在NameNode节点执行以下命令,启动HDFS
[hadoop@hadoop101 ~]# start-dfs.sh
(2)在ResourceManager节点执行以下命令,启动Yarn
[hadoop@hadoop102 ~]# start-yarn.sh
2)启动Zookeeper集群
[hadoop@hadoop101 ~]# zk.sh start
3)启动Kafka集群
[hadoop@hadoop101 ~]# kf.sh start
4)启动Hbase集群
[hadoop@hadoop101 ~]# start-hbase.sh
5)启动Solr集群
在所有节点执行以下命令,使用solr用户启动Solr
[hadoop@hadoop101 ~]# sudo -i -u solr /u/module/solr/bin/solr start [hadoop@hadoop102 ~]# sudo -i -u solr /u/module/solr/bin/solr start [hadoop@hadoop103 ~]# sudo -i -u solr /u/module/solr/bin/solr start
6)进入/u/module/atlas路径,启动Atlas服务
[hadoop@hadoop101 atlas]# bin/atlas_start.py
提示:
(1)错误信息查看路径:/u/module/atlas/logs/*.out和application.log
(2)停止Atlas服务命令为atlas_stop.py
(3)期间可以一直监控/u/module/atlas/logs/application.log,出现问题及时解决。
7)访问Atlas的WebUI
访问地址:http:///hadoop101:21000
注意:等待若干分钟。
账户:admin
密码:admin
2.3.2常见启动错误Caused by: java.io.IOException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = Nonode for /hbase/hbaseid
这是没配置好hbase导致的,可在服务器环境下使用hbase shell排查
[hadoop@hadoop101 ~]$ hbase shell hbase(main):001:0> status 1 active master, 0 backup masters, 3 servers, 0 dead, 2.0000 average load Took 0.5953 seconds
这是正常的,如果有dead,那可能hbase有问题,导致无法在hbase中建立初始表,出错
在重新安装atlas时也需将hbase中的初始表删除:
hbase(main):002:0> list TABLE apache_atlas_entity_audit apache_atlas_janus hbase(main):003:0> disable 'apache_atlas_entity_audit' hbase(main):003:0> drop 'apache_atlas_entity_audit' hbase(main):003:0> exists 'apache_atlas_entity_audit' hbase(main):003:0> disable 'apache_atlas_janus' hbase(main):003:0> drop 'apache_atlas_janus' hbase(main):003:0> exists 'apache_atlas_janus'3.导入hive元数据 3.1 导入
[hadoop@hadoop101 ~]# /u/module/atlas/hook-bin/import-hive.sh
3.2 错误提示解决[hadoop@hadoop101 ~]$ /u/module/atlas/hook-bin/import-hive.sh Using Hive configuration directory [/u/module/hive/conf] Log file for import is /var/log/atlas/import-hive.log Enter username for atlas :- admin Enter password for atlas :- Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/ClientHandlerException at org.apache.atlas.hive.bridge.HivemetaStoreBridge.main(HivemetaStoreBridge.java:153) Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.ClientHandlerException at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more Failed to import Hive meta Data!!!
可见是少东西,google了一下,直接加对应的包,它会提示要添加其他的包,添加了几个之后感觉就不对了,可能少了很多。
我在这一步的时候走了很多弯路,比如说根据服务器环境编译了Atlas(后面会介绍),其实版本并不影响atlas使用
再google查找对应报错信息,解决方案如下:
[hadoop@hadoop101 ~]$ cd /u/module/atlas/server/webapp [hadoop@hadoop101 webapp]$ unzip atlas.war -d atlas [hadoop@hadoop101 webapp]$ cd atlas/WEB-INF/lib/ [hadoop@hadoop101 lib]$ cp * /u/module/atlas/hook/hive/atlas-hive-plugin-impl/
再次执行,然后报错
2022-01-12T09:31:21,610 INFO [main] org.apache.hadoop.hive.conf.HiveConf - Found configuration file file:/u/module/hive/conf/hive-site.xml Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141) at org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:5099) at org.apache.atlas.hive.bridge.HivemetaStoreBridge.main(HivemetaStoreBridge.java:141) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapred.JobConf at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more Failed to import Hive meta Data!!!
这应该是缺少调用mapreduce的包
[hadoop@hadoop101 lib]$ cd /u/module/hadoop-3.1.3/share/hadoop/mapreduce
找到这三个包
hadoop-mapreduce-client-common-3.1.3.jar
hadoop-mapreduce-client-core-3.1.3.jar
hadoop-mapreduce-client-jobclient-3.1.3.jar
[hadoop@hadoop101 mapreduce]$ cp hadoop-mapreduce-client-common-3.1.3.jar hadoop-mapreduce-client-core-3.1.3.jar hadoop-mapreduce-client-jobclient-3.1.3.jar /u/module/atlas/hook/hive/atlas-hive-plugin-impl/
再次导入:
[hadoop@hadoop101 ~]# /u/module/atlas/hook-bin/import-hive.sh
到这了应该是可以正常导入hive元数据,如果还有错误,那就跟着我下面的 *** 作根据服务器环境编译atlas
2022-01-18T15:25:21,834 INFO [main] org.apache.atlas.hive.bridge.HivemetaStoreBridge - Successfully imported 26 tables from database nsfc Hive meta Data imported successfully!!!4.编译 Atlas
先根据服务器环境,查看atlas的各版本pom文件,选定环境相近的atlas
https://github.com/apache/atlas/blob/master/pom.xml
我这边选用atlas2.1.0
请前往官网下载对应源码包 https://atlas.apache.org/#/Downloads
注意,需要先安装maven,因为这是使用maven开发的java web工程。maven3.6.3版本即可
下载地址
https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
上传到linux的/usr/local目录
cd /usr/local
解压文件
tar -zxvf apache-maven-3.6.3-bin.tar.gz
配置环境变量
vi /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.6.3 export PATH=MAVEN_HOME/bin:PATH
刷新环境变量
source etc/profile
检查版本
mvn -v
配置好maven的环境变量 注意国内需要配置好maven的国内镜像,一般使用阿里,华为,清华等镜像
vi /usr/local/apache-maven-3.6.3/conf/settings.xml
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
把这个setting.xml 拷贝到 ~/.m2/
cp settings.xml .m2/
解压源码包
tar -zxvf apache-atlas-2.1.0-sources.tar.gz
1.修改atlas源码工程的pom.xml
将hbase zookeeper hive等依赖的版本修改成自己环境中一致的版本(或者兼容的版本)
父工程pom文件
3.1.3 2.0.5 8.11.1 3.1.2 3.5.7
由于log4j2的漏洞问题,所以升级Solr为8.11.1,hive中的log4j2的解决方案为替换log4j2的jar包,这里不赘述
2.执行maven编译打包
atlas使用内嵌的hbase-solr,则使用如下命令进行编译打包
cd apache-atlas-sources-2.1.0/ export MAVEN_OPTS="-Xms2g -Xmx2g" mvn clean -DskipTests package -Pdist,embedded-hbase-solr
不用内置: mvn clean -DskipTests package -Pdist
编译完成之后,会产生打包结果,所在位置是:源码目录中的新出现的distro/target目录,此处也可见到hook包
看到一排success即算成功。
需重复2-3步骤安装Atlas
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)