Ambari 集成 Apache Kylin 服務(適配於 2.6.x / 2.7.x 版本)

1、前言

Apache Kylin™是一個開源的分佈式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。html

若是須要將Kylin服務受控於Ambari管控,那就須要集成服務了。nginx

2、集成服務

<!--more-->git

關於ambari-Kylin的Python腳本已上傳至github,具體地址參見:傳送門github

使用該項目的前提條件
  1. ambari主節點上安裝httpd服務並開啓,將Kylin和Nginx的源碼包放到/var/www/html/kylin目錄下。(因爲源碼包太大,github上傳不了,請到文章底部關注個人微信公衆號,回覆ambari-kylin獲取雲盤連接。也感謝您的關注!)
  2. ambari集羣各主機已安裝wget命令
  3. 適配CentOS-7 64位系統,CentOS-6 64位系統(使用CentOS-6系統,啓動nginx時可能會報錯,下文會粘出解決方法),其餘系統沒有測試
  4. 適配於ambari2.6 + hdp 2.6.4.0-91,【ambari2.7(待適配)】
  5. 版本說明:Kylin 2.5.1 + Nginx 1.8.1

部署步驟:
  1. 將Kylin和Nginx的源碼包放到Ambari主節點的/var/www/html/kylin中,不須要解壓。
  2. 這裏我選擇的stack版本是2.6,執行一下命令:
cd /var/lib/ambari-server/resources/stacks/HDP/2.6/services
mkdir KYLIN
# 將ambari-Kylin項目拷貝到KYLIN目錄下
git clone https://github.com/841809077/ambari-Kylin.git /var/lib/ambari-server/resources/stacks/HDP/2.6/services/KYLIN
# 若是命令卡住,請手動下載壓縮包並解壓到KYLIN目錄下

最終如圖所示:web

  1. 重啓ambari:ambari-server restart

Kylin部署方式

目前採用的Kylin部署集羣方式相對來講簡單,只須要增長Kylin的節點數,由於Kylin的元數據(Metadata)是存儲在HBase中,只須要在Kylin中配置,讓Kylin的每一個節點都能訪問同一個Metadata表就造成了Kylin集羣(kylin.metadata.url 值相同)。而且Kylin集羣中只有一個Kylin實例運行任務引擎(kylin.server.mode=all),其它Kylin實例都是查詢引擎(kylin.server.mode=query)模式。
爲了實現負載均衡,即將不一樣用戶的訪問請求經過Load Balancer(負載均衡器)(好比lvs,nginx等)分發到每一個Kylin節點,保證Kylin集羣負載均衡。對於負載均衡器能夠啓用SSL加密,安裝防火牆,對外部用戶只用暴露負載均衡器的地址和端口號,這樣也保證Kylin系統對外部來講是隔離的。
咱們的生產環境中使用的LBnginx,用戶經過LB的地址訪問Kylin時,LB將請求經過負載均衡調度算法分發到Kylin集羣的某一個節點,不會出現單點問題,同時若是某一個Kylin節點掛掉了,也不會影響用戶的分析。
這種方式也不是完美的,可是比較好配置,通常場景下是能夠知足的。算法


該項目修改以下:
  1. Kylin和Nginx源碼修改shell

    • 修改了Kylin的日誌輸出爲/var/log/kylin/目錄下
    • 修改Nginx的日誌輸出爲/var/log/nginx/目錄下
    • 修改Nginx的pid文件路徑爲:/var/run/nginx/nginx.pid
  2. 完善腳本邏輯,優化代碼。
  3. 增長並修改kylin.xmlnginx.xml文件內容
  4. 實如今ambari web UI修改配置項,保存後提示重啓功能
  5. 因爲80端口與httpd端口衝突,因此修改Nginx的端口爲81
  6. 解決nginx負載均衡後,須要刷新頁面,重複登錄才能夠訪問到實時數據的問題,實現session會話持久性

項目邏輯說明
  1. 經過wget命令在主節點的本地倉庫中下載KylinNginx的源碼,源碼安裝路徑分別爲:/usr/hdp/2.6.4.0-91/kylin/usr/hdp/2.6.4.0-91/nginx。不要修改nginx的安裝目錄,不然啓動nginx會報錯。若是須要更改nginx的安裝目錄,須要從新編譯nginx源碼。
  2. 經過該服務腳本可以成功部署Kylin集羣,三臺主機:一個all模式,兩個query模式,nginx節點可安裝在任意一臺節點上。
  3. 不足或須要注意的地方: 選擇Kylin slave的時候,Kylin all所在節點上不能安裝Kylin Query,這裏在ambari界面上沒有作限制。要注意。最終實現效果就是每一個節點上都有Kylin服務,只不過模式不一樣,分工不一樣。

效果圖


nginx在CentOS-6 64位系統啓動失敗問題解決方案

點擊這裏獲取解決方案segmentfault


還擁有的功能
  1. Kylin服務依賴於hdfs,mapreduce,hive,hbase組件,如何定義ambari集羣各服務組件的起停順序,使Kylin服務組件在hdfs,mapreduce,hive,hbase組件以後啓動呢,這是一個知識點
  2. 添加告警設置,若是某節點的Kylin端口掛掉了,給與用戶報警展現

kylin + nginx 源碼包太大,gitgub上傳不了,而且上述還擁有的功能已經實現,若是有須要的能夠私信個人公衆號:回覆ambari-kylin獲取雲盤連接,裏面有整個源碼包自定義Kylin安裝服務腳本完整版微信

上述功能若是感興趣的,能夠微信搜索公衆號私聊我:大數據實戰演練或者掃描下方二維碼關注便可:session

點關注,不迷路

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

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

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

相關文章
相關標籤/搜索