HDP版本:3.0html
Kylin版本:2.6.0node
前言nginx
本文主要講解如何部署Kylin集羣,採起多個Kylin實例共享HBase存儲的模式,若是須要事先了解Kylin基本概念的朋友能夠點擊這裏前往。git
首先安裝一個Kylin實例,而後再分析Kylin集羣模式部署的注意點。github
<!--more-->sql
這裏使用的是Kylin-2.6.0的版本,若是須要其它版本的話,請點擊這裏shell
cd /usr/hdp/3.0.1.0-187/ wget https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-2.6.0-rc1/apache-kylin-2.6.0-bin-hadoop3.tar.gz mv apache-kylin-2.6.0-bin-hadoop3.tar.gz kylin
啓動kylin服務時,會在Retrieving hive dependency...卡住,須要手動敲兩下回車或者任意命令才能夠繼續往下執行,不然會一直被卡住。apache
以爲是因爲Hive版本升級,hive命令行僅支持JDBC操做,因此須要輸入用戶名和密碼所致使的Retrieving hive dependency...卡住。vim
解決辦法是:修改kylin配置,將hive執行模式改成beeline。瀏覽器
cd /usr/hdp/3.0.1.0-187/kylin vim conf/kylin.properties
修改kylin.properties文件:
Kylin的配置項有不少,大部分的配置項都是採用的默認的配置。在這裏咱們須要設置一下hive的執行模式爲beeline
。
## Hive client, valid value [cli, beeline] kylin.source.hive.client=beeline ## Absolute path to beeline shell, can be set to spark beeline instead of the default hive beeline on PATH kylin.source.hive.beeline-shell=beeline ## Parameters for beeline client, only necessary if hive client is beeline kylin.source.hive.beeline-params=-n hive --hiveconf hive.security.authorization.sqlstd.confwhitelist.append='mapreduce.job.*|dfs.*' -u jdbc:hive2://liuyzh2.xdata:10000
配置以下圖所示:
Kylin在基於默認配置的狀況下啓動須要依賴HDFS、YARN、MapReduce、Hive、HBase。
在啓動kylin服務以前,還須要搞定如下兩點:
因爲kylin的底層存儲仍是在HDFS上,因此建議你們仍是使用hdfs用戶來啓動kylin服務,以免在構建cubu過程當中報hdfs文件權限的問題。
以前,我曾嘗試過使用kylin用戶來啓動kylin服務,可是最後我放棄了。舉個例子:Hive的存儲目錄是 /warehouse/tablespace/managed/hive
,因爲該目錄的文件權限是700
,普通用戶kylin是沒有辦法訪問這個目錄的,須要將該目錄設置爲777
,或者經過hdfs
的setfacl
命令,將kylin
用戶設置爲對該目錄
具備讀寫可執行
的權限。對於後期使用ambari集成kylin服務老說太過於麻煩,也懼怕後續還會有相似的文件權限的報錯。
因此最後選用了使用hdfs用戶來啓動kylin服務,省心!
/kylin/kylin_metadata
/kylin/kylin_metadata
文件主要存儲同步Hive表基數的相關文件,以及存儲構建cube的相關信息。須要hive用戶訪問這個目錄。
su hdfs hdfs dfs -mkdir -p /kylin/kylin_metadata hdfs dfs -chmod -R 777 /kylin/kylin_metadata
前期工做準備好以後,使用hdfs用戶來啓動kylin服務:
su hdfs chown -R hdfs:hdfs /usr/hdp/3.0.1.0-187/kylin /usr/hdp/3.0.1.0-187/kylin/bin/kylin.sh start
Kylin 實例是無狀態的服務,運行時的狀態信息存儲在 HBase metastore 中。 出於負載均衡的考慮,您能夠啓用多個共享一個 metastore 的 Kylin 實例,使得各個節點分擔查詢壓力且互爲備份,從而提升服務的可用性。下圖描繪了 Kylin 集羣模式部署的一個典型場景:
若是您須要將多個 Kylin 節點組成集羣,請確保他們使用同一個 Hadoop 集羣、HBase 集羣。而後在每一個節點的配置文件 $KYLIN_HOME/conf/kylin.properties
中執行下述操做:
kylin.metadata.url
值,即配置全部的 Kylin 節點使用同一個 HBase metastore。kylin.server.cluster-servers
,包括全部節點(包括當前節點),當事件變化時,接收變化的節點須要通知其餘全部節點(包括當前節點)。kylin.server.mode
,參數值可選 all
, job
, query
中的一個,默認值爲 all
。job
模式表明該服務僅用於任務調度,不用於查詢;query
模式表明該服務僅用於查詢,不用於構建任務的調度;all
模式表明該服務同時用於任務調度和 SQL 查詢。注意:默認狀況下只有一個實例用於構建任務的調度 (即 kylin.server.mode 設置爲 all 或者 job 模式)。
假如如今咱們有三臺機器,在每一臺機器裏都安裝一個kylin服務。使用同一HBase存儲,用Nginx作負載均衡。
將以前配置好的kylin源碼拷貝至其他兩臺機器上的相同目錄下。須要配置或檢查如下三個配置項,其他保持默認便可。
# 配置全部的 Kylin 節點使用同一個 HBase metastore。 kylin.metadata.url=kylin_metadata@hbase # 配置 Kylin 節點的運行模式 kylin.server.mode=all or job or query # 將全部的 kylin 服務都寫在一塊兒。當事件變化時,接收變化的節點須要通知其餘全部節點(包括當前節點)。 kylin.server.cluster-servers=node71.xdata:7070,node73.xdata:7070,node72.xdata:7070
默認狀況下只有一個實例用於構建任務的調度,即僅有一臺kylin能夠配置爲kylin.server.mode=all
或kylin.server.mode=job
,其他機器的kylin配置爲kylin.server.mode=query
。
使用Nginx來對Ktlin集羣作負載均衡,如下爲nginx.conf文件內容:
user root; worker_processes auto; error_log /var/log/nginx/error.log; error_log /var/log/nginx/error.log notice; error_log /var/log/nginx/error.log info; pid /var/run/nginx/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log; sendfile on; tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 81; server_name localhost; #charset koi8-r; location / { proxy_pass http://kylin.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } upstream kylin.com { ip_hash; server node71.xdata:7070;server node73.xdata:7070;server node72.xdata:7070; } }
爲了維持session會話持久性,避免頻繁刷新頁面出現kylin登錄頁面進行登錄,須要在nginx.conf文件內配置ip_hash
。
關於Nginx的安裝,須要提早編譯,編譯經過後纔可使用,而且依賴於當前目錄。若是以後須要移動nginx目錄的話,則須要再次編譯nginx,才能夠從新使用。
關於Nginx的安裝,可參考Nginx安裝配置。
將Nginx服務以及全部節點的kylin服務啓動,咱們能夠在瀏覽器中輸入:http://10.6.6.73:81/kylin/,來訪問咱們的Kylin集羣。
以前,我寫了一片文章,是集成Apache Kylin 2.5.1
服務到Ambari2.6.1
,可參考Ambari2.6.1集成Apache Kylin服務。
以後,我又集成了Apache Kylin 2.6.0
服務到Ambari2.7.1
。
如今已將Kylin的自定義服務上傳至github,具體地址:Ambari集成Apache Kylin服務(離線部署、可支持HDP 2.6+及HDP 3.0+。
好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是 人才。
白嫖很差,創做不易。 各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!
若是本篇博客有任何錯誤,請批評指教,不勝感激 !
本文來自: 微信公衆號【大數據實戰演練】。閱讀更多精彩好文,歡迎關注微信公衆號【大數據實戰演練】。