1. 程式人生 > >kylin跨集群配置實現讀寫分離

kylin跨集群配置實現讀寫分離

KYLIN HBASE HIVE 讀寫分離 跨集群

社區提供的讀寫分離架構圖如下:技術分享圖片
通過架構圖可以看到Kylin會訪問兩個集群的HDFS,建議兩個集群的NameService務必不能相同,尤其是集群啟用NameNode HA時,相同的NameService會導致組件在跨集群訪問HDFS時因無法區分NameService而出現問題。

兩個集群:
cluster1(hive集群):hdfs.hive,yarn,zookeeper,mr
cluster2(hbase集群):hdfs,hbase,zookeeper,yarn,kylin
首先配一個KYLIN_HOME,配到KYLIN的主目錄
我們的kylin安裝在cluster2上,只要在cluster2上面配置環境變量就可以了。

在cluster2上要配置很多cluster1的hadoo參數
我單獨創建一個目錄放在$KYLIN_HOME下,叫hadoop_conf,裏面需要有這些文件
技術分享圖片

下面解釋一下哪些用cluster1的參數,哪些文件用cluster2的參數.。如果用cluster1的參數,直接從cluster1拷貝過來就行了。
這些文件都在$KYLIN/HOME/hadoop_conf這個目錄下
core-site.xml----cluster1 這個裏面配置了hdfs的地址
hbase-site.xml---cluster2
hdfs-site.xml----cluster2 這個裏面配置了nameservice的參數,沒有它無法解析nameservice

hive--site.xml---cluster1
mapred-site.xml--cluster1

我們用kylin用戶去啟動及服務,所以配置一下kylin用戶環境變量,修改 ~/.bashrc 這個文件
添加上這些
export HBASE_CONF=$KYLIN/HOME/hadoop_conf
export HIVE_CONF=$KYLIN/HOME/hadoop_conf
export HADOOP_CONF_DIR=$KYLIN/HOME/hadoop_conf
!!!!!!!!!!!!!!
export HBASE_CONF_DIR=$KYLIN/HOMEhadoop_conf
這個HBASE_CONF_DIR很重要,因為kylin是用過HBASE去讀取hdfs--site和core-site.xml這兩個文件從而讀取HDFS的環境變量的,不加的話默認會讀CDH目錄下HBASE的配置,我因為這個東西卡了好幾天,加了好幾天班才發現。好想哭。。。。而KYLIN官方根本沒有寫,坑爹啊。。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

配置conf/kylin.properties和tomcat/conf/server.xml
conf/kylin.properties根據自己需要去配置,主要配置下hive和hbase的相關參數,
tomcat/conf/server.xml主要有2個地方需要註意:
1.keystore
<Connector port="7443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
需要去生成相應的keystore文件,或者直接把這段註釋掉

2.我在測試環境上沒有修改這個可以正常運行,在生產機部署的時候,打開前端的ui,出現無法加載models,配置,和環境變量的問題,同時會在前臺彈出“failed to take actions”的提示
經過好幾天的查找,發現是前端獲取資源在解壓縮的時候出現問題,把壓縮關掉

<Connector port="7070" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="7443"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/javascript,application/json,text/css,text/plain"
/>中
把compression="on"改為 compression="off"

修改KYLIN_HOME/conf/kylin.perproties,

kylin.source.hive.client=beeline

##jdbc的url改為cluster1的hive地址
kylin.source.hive.beeline-params=-n root --hiveconf hive.security.authorization.sqlstd.confwhitelist.append=‘mapreduce.job.|dfs.‘ -u jdbc:hive2://stream3:25002

##改為cluster2的hdfs地址
kylin.storage.hbase.cluster-fs=hdfs://stream-master1:8020

另外我在build任務過程中第16步失敗,原因是分配資源不夠,在KYLIN_HOIME/conf/kylin_job_conf.xml中添加一下mapreduce.map.memory.mb和mapreduce.reduce.memory.mb的這兩個參數,把值配大一點就好了。

然後啟動就可以了。

kylin跨集群配置實現讀寫分離