Kylin集羣模式部署(使用同一HBase存儲)

HDP版本:3.0html

Kylin版本:2.6.0node

前言nginx

本文主要講解如何部署Kylin集羣,採起多個Kylin實例共享HBase存儲的模式,若是須要事先了解Kylin基本概念的朋友能夠點擊這裏前往。git

1、安裝啓動Kylin

首先安裝一個Kylin實例,而後再分析Kylin集羣模式部署的注意點。github

<!--more-->sql

1. 下載源碼

這裏使用的是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

2. 修改配置文件

啓動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

配置以下圖所示:

3. 啓動

Kylin在基於默認配置的狀況下啓動須要依賴HDFS、YARN、MapReduce、Hive、HBase。

在啓動kylin服務以前,還須要搞定如下兩點:

  • 選擇運行kylin服務的用戶

因爲kylin的底層存儲仍是在HDFS上,因此建議你們仍是使用hdfs用戶來啓動kylin服務,以免在構建cubu過程當中報hdfs文件權限的問題。

以前,我曾嘗試過使用kylin用戶來啓動kylin服務,可是最後我放棄了。舉個例子:Hive的存儲目錄是 /warehouse/tablespace/managed/hive,因爲該目錄的文件權限是700,普通用戶kylin是沒有辦法訪問這個目錄的,須要將該目錄設置爲777,或者經過hdfssetfacl命令,將kylin用戶設置爲對該目錄具備讀寫可執行的權限。對於後期使用ambari集成kylin服務老說太過於麻煩,也懼怕後續還會有相似的文件權限的報錯。

因此最後選用了使用hdfs用戶來啓動kylin服務,省心!

  • 解決hive用戶不能訪問/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

2、搭建kylin集羣

1. 如下來自kylin官網資料

Kylin 實例是無狀態的服務,運行時的狀態信息存儲在 HBase metastore 中。 出於負載均衡的考慮,您能夠啓用多個共享一個 metastore 的 Kylin 實例,使得各個節點分擔查詢壓力且互爲備份,從而提升服務的可用性。下圖描繪了 Kylin 集羣模式部署的一個典型場景:

若是您須要將多個 Kylin 節點組成集羣,請確保他們使用同一個 Hadoop 集羣、HBase 集羣。而後在每一個節點的配置文件 $KYLIN_HOME/conf/kylin.properties 中執行下述操做:

  1. 配置相同的 kylin.metadata.url 值,即配置全部的 Kylin 節點使用同一個 HBase metastore。
  2. 配置 Kylin 節點列表 kylin.server.cluster-servers,包括全部節點(包括當前節點),當事件變化時,接收變化的節點須要通知其餘全部節點(包括當前節點)。
  3. 配置 Kylin 節點的運行模式 kylin.server.mode,參數值可選 all, job, query 中的一個,默認值爲 alljob 模式表明該服務僅用於任務調度,不用於查詢;query 模式表明該服務僅用於查詢,不用於構建任務的調度;all 模式表明該服務同時用於任務調度和 SQL 查詢。

注意:默認狀況下只有一個實例用於構建任務的調度 (即 kylin.server.mode 設置爲 all 或者 job 模式)。

2. kylin配置

假如如今咱們有三臺機器,在每一臺機器裏都安裝一個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=allkylin.server.mode=job,其他機器的kylin配置爲kylin.server.mode=query

3. Nginx配置

使用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集羣。

3、集成Kylin服務到Ambari

以前,我寫了一片文章,是集成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+


點關注,不迷路

好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是 人才

白嫖很差,創做不易。 各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!

若是本篇博客有任何錯誤,請批評指教,不勝感激 !

本文來自: 微信公衆號【大數據實戰演練】。閱讀更多精彩好文,歡迎關注微信公衆號【大數據實戰演練】。

相關文章
相關標籤/搜索