跳过正文
  1. 博客/
  2. 后端/
  3. 软件/

Apache Atlas 2.0.0部署实践

·6 分钟· ·
后端 软件
目录

Atlas 是一个可扩展和可扩展的核心基础治理服务集 - 使企业能够有效地和高效地满足 Hadoop 中的合规性要求,并允许与整个企业数据生态系统的集成。[来自百科]

架构图-来源网络

现在我们就基于最新版2.0.0介绍一下部署细节

Server安装
#

  1. 源码安装

首先在https://www.apache.org/dyn/closer.cgi/atlas/2.0.0/apache-atlas-2.0.0-sources.tar.gz下载2.0.0源码

解压源码

  1. 选择Atlas架构

Atlas支持多种架构作为后端

  • HBase + Solr
  • Cassandra + Solr

你可以选择多种,这里我们采用集成HBase + Solr方式编译

	mvn clean -DskipTests package -Pdist,embedded-hbase-solr
  

执行代码即可(推荐使用阿里云的maven源加速编译)

  1. 修改环境变量

编译完之后在/distro/target下面有很多tar.gz包,我们需要的是apache-atlas-2.0.0-server.tar.gz包,解压到当前目录

3.1 修改配置文件conf/atlas-env.sh

	export JAVA_HOME=/your/java/install
  
	
  
	export MANAGE_LOCAL_HBASE=false
  

  
	export MANAGE_LOCAL_SOLR=false
  

我们设定SolrHBase手动开启,方便我们发现哪个部分启动异常

3.2 修改admin密码:

系统默认会生成一个密码给我们,但是官网我也没看到说这个密码,所以我们自己生成一个,然后修改上去

	echo -n "password" | sha256sum
  

使用上面命令生成一个sha256加密字符(你可以把password改成你想要的密码),复制生成的字符串(不需要-),例如5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
修改conf/users-credentials.properties 改成

	admin=ADMIN::5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
  

3.3 修改HBase配置(需要提前安装好java和Zookeeper和Hadoop)

进入hbase目录夹

修改 conf/hbase-env.sh

export JAVA_HOME=/your/java/install
  
export HBASE_MANAGES_ZK=false
  

复制Hadoop配置到HBase中

cp $HADOOP_HOME/etc/hadoop/core-site.xml $HBASE_HOME/conf/
  
cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
  

hbase-site.xml中加入

	  <property>
  
		 <name>hbase.cluster.distributed</name>
  
		 <value>true</value>
  
	</property>
  
			 <property>
  
		<name>hbase.rootdir</name>
  
		 <value>/hbase</value> 
  
	</property>
  
	<property>
  

  
	<name>hbase.zookeeper.quorum</name>
  

  
	<value>localhost</value>
  

  
	</property>
  
	<property>
  
	<name>hbase.zookeeper.property.clientPort</name>
  
<value>2181</value>
  
	</property>
  

启动安装好的Zookeeper,使用./bin/start-hbase.sh启动HBase

使用jps应该能看到HMasterHRegionServer启动了

测试HBase安装是否完成,使用./bin/hbase shell 进入HBase 命令行,如果status命令返回正确的话,那么你的HBase就安装好了

3.4 启动Solr

进入solr目录,启动solr

./bin/solr -c -z localhost:2181 -p 8983
  

打开http://localhost:8983/solr/#/如果能看到正常页面,那么Solr就启动好了

apache-atlas-2.0.0目录下创建索引

	./solr/bin/solr create -c vertex_index -d conf/solr -shards 1 -replicationFactor 1
  
	./solr/bin/solr create -c edge_index -d conf/solr -shards 1 -replicationFactor 1
  
	./solr/bin/solr create -c fulltext_index -d conf/solr -shards 1 -replicationFactor 1
  

3.5 启动Atlas

apache-atlas-2.0.0目录下启动Atlas

使用bin/atlas_start.py 或者 /usr/bin/python2.7 bin/atlas_start.py

PS:第一次启动比较慢,如果前面的HBase和Solr都安装好了的话,一般都没有什么大问题,可以查看logs/application.log查看系统运行情况,等到初始化完成后打开localhost:21000使用admin:password即可登录上去

登录后的页面

当然我们现在系统空空如也,现在我们来使用Hook导入数据到Atlas里面去吧
我测试通过的版本是:Hadoop2.8.1 + Zookeeper 3.4.10 ,其他的都是用的默认Atlas 集成的版本

Hook安装
#

Atlas最强大的的地方就是能够把Hive,Sqoop,Kafka这些大数据组件的血缘关系给自动抽取出来,所以钩子的安装至关重要

Sqoop钩子
#

Sqoop 我用的是1.4.7版本

  • 配置Sqoop钩子

首先在conf/sqoop-site.xml中添加

	<property>
  
	 <name>sqoop.job.data.publish.class</name>
  
	 <value>org.apache.atlas.sqoop.hook.SqoopHook</value>
  
   </property>
  
  • 复制必要的包

解压distro/targetapache-atlas-2.0.0-sqoop-hook.tar.gz,复制apache-atlas-2.0.0-sqoop-hook/apache-atlas-sqoop-hook-2.0.0/hook/sqoop/目录到 <atlas package>/hook/sqoop

如:

cd /where/your/untar/atlas
  
cp -r ../../apache-atlas-2.0.0-sqoop-hook/apache-atlas-sqoop-hook-2.0.0/hook .
  

创建软链接<atlas-conf>/atlas-application.properties<sqoop-conf>/

如:

	ln -s ln -s /home/zhanglun/github/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/conf/atlas-application.properties /opt/sqoop-1.4.7.bin__hadoop-2.6.0/conf
  

<atlas package>/hook/sqoop/*.jar 复制到sqoop lib目录

如:

	cp hook/sqoop/*.jar /opt/sqoop-1.4.7.bin__hadoop-2.6.0/lib
  
	cp hook/sqoop/atlas-sqoop-plugin-impl/*.jar /opt/sqoop-1.4.7.bin__hadoop-2.6.0/lib
  
  • 测试Sqoop 导入Hive中

sqoop import –connect jdbc:mysql://localhost:3306/sqoop
–username root
-P
–split-by id
–table root
–hive-import
–create-hive-table
–hive-table db.auth_user

不出意外应该会报错

	Caused by: java.lang.NullPointerException
  
	at org.apache.atlas.hook.AtlasHook
  

因为我们还没有配置好Sqoop钩子,接下来我们来配置Sqoop钩子

  • 配置Atlas

前面我们创建了软链接,现在我们只要修改conf/atlas-application.properties这个配置即可

首先我们得配置关闭Kafka作为发送消息缓冲,因为Atlas默认使用Kafka作为消息缓冲,然后我们修改下面的配置(这个后期可以打开,你再配置好kafka的地址)

	atlas.notification.embedded=false  # 不往kafka里面发送
  
	atlas.graph.index.search.backend=solr5 
  
  • 异常一: Caused by: java.lang.ClassNotFoundException: org.json.JSONObject

包缺失,下载java-json.jarSqoop文件夹

  • 异常二:Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly

环境变量没有设置对,设置HIVE_CONF_DIRconf/sqoop-env.sh(确保HADOOP_HOMEHIVE_HOME不是空值)

export HADOOP_CLASSPATH="`$HADOOP_HOME/bin/hadoop classpath`:$HIVE_HOME/lib/*"
  
  • 异常三: Error when removing metric from org.apache.kafka.common.metrics.JmxReporter java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

根据stackoverflow 解决

  • 异常四:java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor

Hive包版本和Sqoop包版本冲突(我的Hive版本是2.3.4),可以先备份Sqoop的lib,文件再进行下面操作:

cp -r lib lib_back
  
rm lib/jackson-*
  
cp $HIVE_HOME/lib/jackson-* lib/
  
  • 异常五:Connection to node -1 could not be established

你在conf/atlas-application.properties没有修改atlas.notification.embedded成false,那么你必须配置好kafka地址

atlas.kafka.zookeeper.connect=localhost:2181
  
atlas.kafka.bootstrap.servers=localhost:9092
  

PS:每次出现异常,你必须先删掉Hadoop上面的文件,再执行导入,你可以直接安装我的流程进行修复,因为这些都是我在配置的时候顺序出现的问题,走到这里我们就配置好了SqoopHive的导入Hook,如果运行成功,你会看到下面界面

Sqoop导入Hive血缘关系

接下来我们配置Hive钩子来导入Hive中的表

Hive 钩子
#

  • 配置hive-site.xml

在里面加入

	<property>
  
		<name>hive.exec.post.hooks</name>
  
		  <value>org.apache.atlas.hive.hook.HiveHook</value>
  
	  </property>
  
  • 解压 hive-hook包

如:tar xzvf apache-atlas-2.0.0-hive-hook.tar.gz

  • 复制到atlas中

如:cp -r ../../apache-atlas-2.0.0-hive-hook/apache-atlas-hive-hook-2.0.0/hook/hive hook/

  • 配置Hive环境变量

hive-env.sh中加入'export HIVE_AUX_JARS_PATH=<atlas package>/hook/hiv

  • 给创建软链接

像前面一样创建一个atlas-application.properties软链接到hive/conf目录下
如:ln -s /home/zhanglun/github/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/conf/atlas-application.properties /opt/apache-hive-2.3.4-bin/conf

  • 复制Hive包到Hook

import-hive.sh依赖Hivejackson一些包(报java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.util.BeanUtil.okNameForGetter错误),把Hive的依赖包复制到钩子的包目录下面
如:cp $HIVE_HOME/lib/jackson-* ../hook/hive/atlas-hive-plugin-impl/

现在我们尝试执行hook-bin/import-hive.sh(在apache-atlas-2.0.0-hive-hook/apache-atlas-hive-hook-2.0.0目录下)

hive导入的表

现在Atlas里面有两张表,不过一张是Sqoop导入的,一张是Hive导入的,查看Hive导入的血缘关系时候我们发现,他只有自己的一张表(源表)

其他Kafka和Storm的钩子比较简单我就不介绍详细过程了

相关文章

FlinkSQL Client实战
·2 分钟
后端 软件
Flink SQL Client 是一个帮助用户直接运行SQL,而不要进行编译运行的工具,首先他支持多个数据源,在Flink1.9.0开始支持了Hive,并且在Flink 1.10.0时候发布了企业级Hive支持,这样就把批处理和流计算结合了起来,这篇博客详解了Hive在Flink SQL Client中的安装和使用,以及探索在上面做的一些复杂开发实践
Build Hadoop Cluster in One Computer
·4 分钟
后端 软件
If you are hadoop novice, I strongly suggest you beginning your study from single node building,you can learn from this website, after you having finshed build one single node, then you can reading my blog to learn how to run a N-node clusters just in your computer.
Ubuntu16.04安装Tensorflow的CPU优化
·3 分钟
后端 软件
由于我的笔记本是农卡,没法安装CUDA加速,而且我的显卡只有2G显存,安装OpenCL费力不讨好,而且由于我有一个Google云的300美元的体验,所以可以在Google云上使用TPU来进行加速,所以我就干脆不安装显卡加速,但是Tensorflow提供了指令集优化,由于默认使用pip安装没有提供这个功能,所以只能手动编译安装
巧用Git钩子
·5 分钟
后端 软件 Git
以前听学长提过Git钩子,但是自己一直没有仔细了解过,记得我还写过一个github更新的Python包,现在想想其实用自带的钩子就能很好的完成
ansible管理nginx负载均衡
·4 分钟
后端 软件
前言 # 因为手头自己有三个服务器,所以想折腾一下负载均衡。
git 工作流程
·3 分钟
后端 软件
git是当今流行的版本控制工具,一般我们可能只要会push, pull就可以了, 但是当我们同别人共同工作的时候,我们必须要了解git协同开发的一些重要流程.