前言
按照官方文檔[1]的說法,Atlas的編譯與安裝主要有Not-embedded、embedded兩種方式。
Not-embedded是指Atlas使用的JanusGraph的Hbase與Solr需要單獨部署,embedded指Atlas的在編譯過程中會自動下載下傳JanusGraph的Hbase與Solr。當然JanusGraph的圖資料存儲也可以放在BerkeleyDB、Cassandra中、索引資料也存放在Elasticsearch中。本系列博文預設圖資料存儲在Hbase,索引資料放在Solr中。
這篇博文主要介紹在CDH 6.2.x/CDH 6.3.x的環境下,使用CDH自帶的Hbase、Solr、Kafka,以Not-embedded的方式編譯、內建Atlas,監控CDH中Hive的中繼資料變化。
環境說明
由于Atlas架構較為複雜,且資料存儲在CDH的Hbase、Solr、Kafka中,建議仔細核對軟體環境,并使用我提供的Github上定制的Atlas源碼[2]進行編譯。
CDH 6.2.x[3]/CDH 6.3.x環境如下:
Component | Component Version | Changes Information |
---|---|---|
Apache Avro | 1.8.2 | Changes |
Apache Flume | 1.9.0 | Changes |
Apache Hadoop | 3.0.0 | Changes |
Apache HBase | 2.1.2 | Changes |
HBase Indexer | 1.5 | Changes |
Apache Hive | 2.1.1 | Changes |
Hue | 4.3.0 | Changes |
Apache Impala | 3.2.0 | Changes |
Apache Kafka | 2.1.0 | Changes |
Kite SDK | 1.0.0 | Changes |
Apache Kudu | 1.9.0 | Changes |
Apache Solr | 7.4.0 | Changes |
Apache Oozie | 5.1.0 | Changes |
Apache Parquet | 1.9.0 | Changes |
Parquet-format | 2.3.1 | Changes |
Apache Pig | 0.17.0 | Changes |
Apache Sentry | 2.1.0 | Changes |
Apache Spark | 2.4.0 | Changes |
Apache Sqoop | 1.4.7 | Changes |
Apache ZooKeeper | 3.4.5 | Changes |
其中重點關注Hadoop、HBase、Hive、Kafka、Solr、Zookeeper的版本,由于這些元件在CDH 6.3.x與CDH 6.2.x中一緻,本篇文章以CDH 6.2.x為準。
JDK版本:必須使用jdk 8版本,建議從Oracle官方[4]下載下傳。
Atlas版本:2.0.0,使用我提供的Github中源碼進行編譯。
Atlas編譯準備工作
以下修改部分在我提供的Github中代碼已經修改好,注意檢查即可。
- 配置好maven的settings.xml
Atlas在編譯時很容易依賴包下載下傳不到的問題,建議使用Github中的maven settings.xml[5],裡面包含了Spring和Oracle的鏡像源。如果有一些依賴包一直下載下傳不下來,建議開啟翻牆Vpn,設定settings.xml中的proxy參數。
Atlas編譯最好通過mvn指令行運作,使用Idea等IDE可能會編譯、打包失敗。
-
修改pom中的元件版本,與CDH中一緻
修改Atlas根目錄的pom檔案,
Hbase、Solr、Kafka、Zookeeper版本與CDH一緻,Hive比較特殊不要使用2.1版本,要使用3.1版本。保證
-
修改distro/src/conf/atlas-application.properties檔案
源碼包下distro檔案為編譯結果的存儲目錄。這裡conf下的atlas-application.properties最好提前配置好各項參數。
-
修改distro/src/conf/atlas-env.sh檔案
主要修改HBASE_CONF_DIR參數,指向Hbase的配置目錄。
-
修改distro/src/conf/atlas-log4j.xml檔案
主要去掉perf log的相關注釋。
Atlas編譯
使用Atlas打包指令:
mvn clean -DskipTests package -Pdist -X
DskipTests 最好跳過測試,同時-X以Debug的方式進行打包。
編譯後的結果是distro/target/apache-atlas-2.0.0-bin.tar.gz。其他的壓縮包是hook壓縮包,不用管。
Atlas與CDH內建
CDH的開發測試環境中元件分布如下:
域名 | IP | 元件 | |
---|---|---|---|
1 | master | 172.24.66.66 | HBase、Hive、Zookeeper |
2 | slave01 | 172.24.66.67 | Solr、Kafka、Atlas |
3 | slave02 | 172.24.66.68 |
這裡将Atlas安裝在slave02 172.24.66.67上,由于叢集中有impala已經占用了21000端口,是以需要atlas.rest.address端口改為21001。
上傳Atlas到slave01上
在slave01上建立目錄/usr/local/src/atlas,将apache-atlas-2.0.0-bin.tar.gz解壓到該目錄下。
cd /usr/local/src/atlas
tar xvzf apache-atlas-2.0.0-bin.tar.gz .
內建CDH的Solr
将atlas下的/conf/solr拷貝到/opt/cloudera/parcels/CDH/etc/solr/conf.dist/下
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/conf/solr/* [email protected]:/opt/cloudera/parcels/CDH/etc/solr/conf.dist/
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/conf/solr/* [email protected]:/opt/cloudera/parcels/CDH/etc/solr/conf.dist/
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/conf/solr/* [email protected]:/opt/cloudera/parcels/CDH/etc/solr/conf.dist/
重新開機solr
切換solr 建立collection:
su - solr
/opt/cloudera/parcels/CDH/lib/solr/bin/solr create -c vertex_index -d /opt/cloudera/parcels/CDH/etc/solr/conf.dist/ -shards 1 -replicationFactor 1
/opt/cloudera/parcels/CDH/lib/solr/bin/solr create -c edge_index -d /opt/cloudera/parcels/CDH/etc/solr/conf.dist/ -shards 1 -replicationFactor 1
/opt/cloudera/parcels/CDH/lib/solr/bin/solr create -c fulltext_index -d /opt/cloudera/parcels/CDH/etc/solr/conf.dist/ -shards 1 -replicationFactor 1
檢視solr的collection建立情況:
http://172.24.66.67:8983/solr/#/~cloud
內建CDH的Kafka
先測試kafka可以使用
kafka-topics --zookeeper 172.24.66.66:2181 --create --replication-factor 1 --partitions 3 --topic Test3
kafka-console-producer --broker-list 172.24.66.67:9092 --topic Test3
kafka-console-consumer --bootstrap-server 172.24.66.67:9092 --topic Test3 --group TestAtlas --from-beginning
kafka-topics --zookeeper 172.24.66.66:2181 --create --replication-factor 1 --partitions 3 --topic _HOATLASOK
kafka-topics --zookeeper 172.24.66.66:2181 --create --replication-factor 1 --partitions 3 --topic ATLAS_ENTITIES
kafka-topics --zookeeper 172.24.66.66:2181 --create --replication-factor 1 --partitions 3 --topic ATLAS_HOOK
內建CDH的Hive
- 将
打包到atlas-application.properties
中atlas-plugin-classloader-2.0.0.jar
cd /usr/local/src/atlas/apache-atlas-2.0.0/conf
zip -u /usr/local/src/atlas/apache-atlas-2.0.0/hook/hive/atlas-plugin-classloader-2.0.0.jar atlas-application.properties
-
将權限設定為775
cd /usr/local/src/atlas
chmod 775 -R apache-atlas-2.0.0
- 修改hive-site.xml相關的配置項
1、Hive 輔助 JAR 目錄
/usr/local/src/atlas/apache-atlas-2.0.0/hook/hive
2、hive-site.xml 的 Hive 服務進階配置代碼段(安全閥)
<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value><description>atlas hook!</description></property>
3、hive-env.sh 的 Gateway 用戶端環境進階配置代碼段(安全閥)
HIVE_AUX_JARS_PATH=/usr/local/src/atlas/apache-atlas-2.0.0/hook/hive
4、hive-site.xml 的 Hive 用戶端進階配置代碼段(安全閥)
<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value><description>atlas hook 2!</description></property>
5、hive-site.xml 的 HiveServer2 進階配置代碼段(安全閥)
<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value></property><property><name>hive.reloadable.aux.jars.path</name><value>/usr/local/src/atlas/apache-atlas-2.0.0/hook/hive</value></property><property><name>atlas.cluster.name</name><value>primary</value></property>
6、HiveServer2 環境進階配置代碼段(安全閥)
HIVE_AUX_JARS_PATH=/usr/local/src/atlas/apache-atlas-2.0.0/hook/hive
-
将Atlas包發往各個hive節點
scp -r /usr/local/src/atlas/apache-atlas-2.0.0 [email protected]:/usr/local/src/atlas/
scp -r /usr/local/src/atlas/apache-atlas-2.0.0 [email protected]:/usr/local/src/atlas/
- 将Atlas配置檔案發給各個/etc/hive/conf
scp /usr/local/src/atlas/apache-atlas-2.0.0/conf/atlas-application.properties [email protected]:/etc/hive/conf
scp /usr/local/src/atlas/apache-atlas-2.0.0/conf/atlas-application.properties [email protected]:/etc/hive/conf
scp /usr/local/src/atlas/apache-atlas-2.0.0/conf/atlas-application.properties [email protected]:/etc/hive/conf
-
在/etc/profile中增加hive環境變量,用于後續import-hive.sh倒入
export HIVE_HOME="/opt/cloudera/parcels/CDH/lib/hive"
export HIVE_CONF_DIR="/etc/hive/conf"
export PATH="$PATH:$HIVE_HOME/bin"
export HADOOP_HOME="/opt/cloudera/parcels/CDH/lib/hadoop"
source /etc/profile
echo $HIVE_HOME;echo $HIVE_CONF_DIR
-
将hook/hive下所有jar包都拷貝到/opt/cloudera/parcels/CDH/lib/hive/lib下
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/hook/hive/*
[email protected]:
/opt/cloudera/parcels/CDH/lib/hive/lib
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/hook/hive/*
[email protected]:
/opt/cloudera/parcels/CDH/lib/hive/lib
scp -r /usr/local/src/atlas/apache-atlas-2.0.0/hook/hive/*
/opt/cloudera/parcels/CDH/lib/hive/lib[email protected]:
重新啟動hive
內建CDH的Hbase
将hbase的配置檔案指向到atlas下的conf/hbase
ln -s /etc/hbase/conf/ /usr/local/src/atlas/apache-atlas-2.0.0/conf/hbase/
Ref:
1、http://atlas.apache.org/#/BuildInstallation
2、https://github.com/forrestlmj/Atlas
3、https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_62_packaging.html
4、https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html