背景

随着公司数据仓库的建设,数仓hive表愈来愈多,如何管理这些表?
经调研,Atlas成为了我们的选择对象,本文是Atlas实战记录,感谢尚硅谷的学习视频

1.Atlas概述

1.1 Apache Atlas 的主要功能

元数据管理和治理,提升团队间对于数据资产的协作功能

具体功能 详细介绍
元数据分类 支持对元数据进行分类管理,例如个人信息,敏感信息等
元数据检索 可按照元数据类型、元数据分类进行检索,支持全文检索
元数据检索 支持表到表字段到字段之间的血缘依赖,便于进行问题回溯和影响分析

1.1 Atlas架构原理

2.安装

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

服务名称 子服务 服务器 hadoop101 服务器 hadoop102 服务器 hadoop103
JDK1.8.0_212
Zookeeper3.5.7 QuorumPeerMain
Kafka2.4.1 Kafka
HBase2.0.5 HMaster
HRegionServer HRegionServer
Solr8.11.1 Jar
Hive3.1.2 Hive
Atlas2.1.0 atlas
服务数总计 13 7 7

2.1.1 安装Solr-8.11.1

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,ruok

2.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/atlas

2.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/conf

2.2.2 Atlas集成Solr

1.修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数

atlas.graph.index.search.backend=solratlas.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 2

2.2.3 Atlas集成Kafka

修改/u/module/atlas/conf/atlas-application.properties配置文件中的以下参数

# 121行
atlas.notification.embedded=falseatlas.kafka.data=/u/module/kafka/dataatlas.kafka.zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka
atlas.kafka.bootstrap.servers=hadoop101:9092,hadoop102:9092,hadoop103:9092

2.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 startsatlas.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

#去掉如下代码的注释<appender name="perf_appender" class="org.apache.log4j.DailyRollingFileAppender"><param name="file" value="${atlas.log.dir}/atlas_perf.log" /><param name="datePattern" value="'.'yyyy-MM-dd" /><param name="append" value="true" /><layout class="org.apache.log4j.PatternLayout">​    <param name="ConversionPattern" value="%d|%t|%m%n" /></layout></appender><logger name="org.apache.atlas.perf" additivity="false"><level value="debug" /><appender-ref ref="perf_appender" /></logger>

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=kerberosatlas.authentication.principal=atlas//hadoop101@EXAMPLE.COMatlas.authentication.keytab=/etc/security/keytab/atlas.service.keytab

2.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。

<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

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 shellhbase(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/ClientHandlerExceptionat org.apache.atlas.hive.bridge.HiveMetaStoreBridge.main(HiveMetaStoreBridge.java:153)
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.ClientHandlerExceptionat 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/JobConfat org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5099)at org.apache.atlas.hive.bridge.HiveMetaStoreBridge.main(HiveMetaStoreBridge.java:141)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapred.JobConfat 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

4.1安装maven

注意,需要先安装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

<mirror><id>alimaven</id><name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

把这个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文件

     <hadoop.version>3.1.3</hadoop.version><hbase.version>2.0.5</hbase.version><solr.version>8.11.1</solr.version><hive.version>3.1.2</hive.version><zookeeper.version>3.5.7</zookeeper.version>

由于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

Atlas2.1.0实战:安装、配置、导入hive元数据、编译排坑相关推荐

  1. mysql 8.0.18安装,mysql 8.0.18 安装配置方法图文教程

    mysql 8.0.18 安装配置方法图文教程 本文记录了mysql 8.0.18 安装配置图文教程,供大家参考,具体内容如下 第一步:下载MySql 下载地址:MySQL 第二步:安装MySql 打 ...

  2. mysql安装教程8.0.22_mysql 8.0.22 安装配置方法图文教程

    本文记录了mysql 8.0.22 安装配置图文教程,供大家参考,具体内容如下 一.安装 (1).官网下载 (2).安装(前提是之前没安装过mysql,若安装过,下面有介绍卸载方式:若不知道有没有安装 ...

  3. VMware ESXI5.0的安装配置

    VMware ESXI5.0的安装配置   在最近发布的vSphere 5.0中,VMware淘汰了ESX,ESXi成为了唯一的hypervisor.在ESXi 5.0中,VMware提供了七大重要的 ...

  4. apache2.2 + php5.2.4 + mysql5.0.x 安装配置

    apache2.2  + php5.2.4  + mysql5.0.x 安装配置 我下载的都是安装版本,先对简单,需要修改的配置不多 发生错误后在google baidu上查找,所出现的错误都能找到, ...

  5. mysql8.0安装设置密码_mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    本文为大家分享了mysql8.0.11安装配置方法图文教程.MySQL8.0新密码认证方式,供大家参考,具体内容如下 1.前言 Oracle已经发布了MySQL8.0GA,GA在外国就是release ...

  6. tomcat7.0.81 linux,Linux/CentOS7.0下安装配置Tomcat8.0

    Linux/CentOS7.0下安装配置Tomcat8.0 一.配置Tomcat安装环境 1.下载对应的jdk 我用的是64位的下载地址: 下载将jdk加压后放到/usr/local目录下: 2.建立 ...

  7. ubuntu18.4中查看mysql_Ubuntu18.0.4下mysql 8.0.20 安装配置方法图文教程

    mysql 8.0.20 安装配置方法图文教程整理下,供大家参考. 一.准备工作 1.检查是否已经安装mysql 当前计算机没有安装mysql. 2.下载MySQL8.0. 根据MySQL安装指南,发 ...

  8. mysql 8.0.23 安装配置方法

    win10下mysql 8.0.23 安装配置方法图文教程 mysql 8.0.23 安装配置方法 一.下载mysql 二.环境配置: 三.安装: mysql 8.0.23 安装配置方法 本文为大家分 ...

  9. Rundeck3.0.8 安装配置及使用

    Rundeck 3.0.8 安装配置及使用 简单的例子,在windows上安装rundeck, 配置一台linux服务器,执行一个简单命令pwd 1. Rundeck 安装 rundeck安装有多种方 ...

最新文章

  1. python string模块安装_python String模块-阿里云开发者社区
  2. python 程序停止打印日志_Python日志打印
  3. I/0口输入输出实验 将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭
  4. 寻找矩阵行最大列最小元素
  5. NRF24L01无线通信模块使用示例和调试心得总结
  6. 计算机读不出光盘,光驱读不出光盘,小编教你电脑光盘不能被识别怎么解决
  7. oracle数据库长连接和短连接,tcp 长连接与短连接
  8. Panabit存在命令执行漏洞
  9. 转x电容和y电容的区别
  10. 经典俄罗斯方块游戏手机版
  11. STM32CubeMX全部版本下载地址
  12. 钉钉应用开发服务器API错误码原因及解决方法
  13. 前端自动化 Jenkins/TravisCI/CiecleCi
  14. win10看不到家庭组计算机,win10专业版没有家庭组怎么办?一招帮你解决问题
  15. 回文树/回文自动机 引入
  16. 这一次,为广州扛旗举鼎的为什么是融创文旅城?
  17. python如何生成多个随机数的列表
  18. 用代码加密,2种方法教你在C#中保护PPT文档
  19. 14. 微服务综合案例2 zipkin dashboard turbine uaa (2刷)
  20. 找不到wpcap.dll解决方法

热门文章

  1. 信息技术优质课评价标准
  2. 地图实现-网页版Google Map
  3. 入选数据库顶会 VLDB:如何有效降低产品级内存数据库快照尾延迟?
  4. matlab牛顿环gif,牛顿环干涉实验的 Matlab模拟
  5. 论文翻译 | RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds
  6. Kdevelop使用方法
  7. Ansj添加停用词表
  8. ganache命令行安装
  9. 射影几何笔记4:公理和证明
  10. 【机器学习】手写识别系统