(圖片來源於網絡,侵刪)
一、Kylin 概述
1.Kylin 簡介
Apache Kylin 是一個開源的分佈式分析引擎
,提供 Hadoop/Spark 之上的 SQL 查詢接口
及多維分析(OLAP)
能力以支持超大
規模數據,最初由 eBay Inc 開發並貢獻至開源社區。它能在亞秒
內查詢巨大的 Hive 表
2.Kylin 架構
1)REST Server
REST Server 是一套面向應用程序開發的入口點,旨在實現針對 Kylin 平臺的應用開發
工作。 此類應用程序可以提供查詢、獲取結果、觸發 cube 構建任務、獲取元數據以及獲取
用戶權限等等。另外可以通過 Restful 接口實現 SQL 查詢
2)查詢引擎(Query Engine)
當 cube 準備就緒後,查詢引擎就能夠獲取並解析用戶查詢。它隨後會與系統中的其它
組件進行交互,從而向用戶返回對應的結果
3)路由器(Routing)
在最初設計時曾考慮過將 Kylin 不能執行的查詢引導去 Hive 中繼續執行,但在實踐後
發現 Hive 與 Kylin 的速度差異過大,導致用戶無法對查詢的速度有一致的期望,很可能大
多數查詢幾秒內就返回結果了,而有些查詢則要等幾分鐘到幾十分鐘,因此體驗非常糟糕。
最後這個路由功能在發行版中默認關閉
4)元數據管理工具(Metadata)
Kylin 是一款元數據驅動型應用程序。元數據管理工具是一大關鍵性組件,用於對保存
在 Kylin 當中的所有元數據進行管理,其中包括最爲重要的 cube 元數據。其它全部組件的
正常運作都需以元數據管理工具爲基礎。 Kylin 的元數據存儲在 hbase 中
5)任務引擎(Cube Build Engine)
這套引擎的設計目的在於處理所有離線任務,其中包括 shell 腳本、Java API 以及 MapReduce 任務等等。任務引擎對 Kylin 當中的全部任務加以管理與協調,從而確保每一項任務都能得到切實執行並解決其間出現的故障
3.Kylin 特點
Kylin 的主要特點包括支持 SQL 接口、支持超大規模數據集、亞秒級響應、可伸縮性、高吞吐率、BI 工具集成等
1)標準 SQL 接口:Kylin 是以標準的 SQL 作爲對外服務的接口
2)支持超大數據集:Kylin 對於大數據的支撐能力可能是目前所有技術中最爲領先的早在 2015 年 eBay 的生產環境中就能支持百億記錄的秒級查詢,之後在移動的應用場景中又有了千億記錄秒級查詢的案例
3)亞秒級響應:Kylin 擁有優異的查詢相應速度,這點得益於預計算,很多複雜的計算,
比如連接、聚合,在離線的預計算過程中就已經完成,這大大降低了查詢時刻所需的計算量,
提高了響應速度。
4)可伸縮性和高吞吐率:單節點 Kylin 可實現每秒 70 個查詢,還可以搭建 Kylin 的集羣。
5)BI 工具集成
Kylin 可以與現有的 BI 工具集成,具體包括如下內容。
ODBC:與 Tableau、Excel、PowerBI 等工具集成
JDBC:與 Saiku、BIRT 等 Java 工具集成
RestAPI:與 JavaScript、Web 網頁集成
Kylin 開發團隊還貢獻了 Zepplin 的插件,也可以使用 Zepplin 來訪問 Kylin 服務
二、Kylin 安裝
2.1 Kylin 依賴環境
安裝 Kylin 前需先部署好 Hadoop、Hive、Zookeeper、HBase,並且需要在/etc/profile
中配置以下環境變量 HADOOP_HOME
,HIVE_HOME
,HBASE_HOME
,記得 source 使其生效
之前我們已經安裝好了Hadoop、Hive、以及Zookeeper,但是還沒有安裝HBase,詳細安裝步驟請點擊👉 【HBase】HBase入門詳解(二)
2.2 Kylin 搭建
1)下載 Kylin 安裝包
下載地址:http://kylin.apache.org/cn/download
2)解壓 apache-kylin-2.5.1-bin-hbase1x.tar.gz 到 /opt/modules
tar -zxvf apache-kylin-2.5.1-bin-hbase1x.tar.gz -C /opt/modules
注意:啓動前檢查 HADOOP_HOME,HIVE_HOME,HBASE_HOME 是否配置完畢
3)配置
將core-site.xml、hdfs-site.xml、hive-site.xml、spark-defaults.conf軟連接到kylin的conf目錄下
修改 kylin.properties文件
36行
kylin.env.hdfs-working-dir=/apps/kylin
42行
kylin.env.zookeeper-base-path=/kylin
106行
kylin.source.hive.keep-flat-table=false
109行
kylin.source.hive.database-for-flat-table=default
112行
kylin.source.hive.redistribute-flat-table=true
118行
kylin.storage.url=hbase
121行
kylin.storage.hbase.table-name-prefix=KYLIN_
124行
kylin.storage.hbase.namespace=default
127行
kylin.storage.hbase.compression-codec=none
310行
kylin.env.hadoop-conf-dir=/opt/modules/hadoop/etc/hadoop
313行
kylin.engine.spark.rdd-partition-cut-mb=10
316行
kylin.engine.spark.min-partition=1
319行
kylin.engine.spark.max-partition=1000
322行
kylin.engine.spark-conf.spark.master=yarn
323行
kylin.engine.spark-conf.spark.submit.deployMode=cluster
324行
kylin.engine.spark-conf.spark.yarn.queue=default
325行
kylin.engine.spark-conf.spark.driver.memory=512M
326行
kylin.engine.spark-conf.spark.executor.memory=1G
327行
kylin.engine.spark-conf.spark.executor.instances=2
328行
kylin.engine.spark-conf.spark.yarn.executor.memoryOverhead=512
329行
kylin.engine.spark-conf.spark.shuffle.service.enabled=true
330行
kylin.engine.spark-conf.spark.eventLog.enabled=true
331行
kylin.engine.spark-conf.spark.eventLog.dir=hdfs://mycluster:8020/apps/spark2/spark-history
332行
kylin.engine.spark-conf.spark.history.fs.logDirectory=hdfs://mycluster:8020/apps/spark2/spark-history
333行
kylin.engine.spark-conf.spark.hadoop.yarn.timeline-service.enabled=false
336行
kylin.engine.spark-conf-mergedict.spark.executor.memory=1G
337行
kylin.engine.spark-conf-mergedict.spark.memory.fraction=0.2
340行
kylin.engine.spark-conf.spark.yarn.archive=hdfs://mycluster:8020/apps/spark2/lib/spark-libs.jar
341行
kylin.engine.spark-conf.spark.io.compression.codec=org.apache.spark.io.SnappyCompressionCodec
4)啓動
(1)啓動 Kylin 之前,需先啓動 Hadoop(hdfs,yarn,jobhistoryserver)、Zookeeper、Hbase
(2)因爲我們需要使用Kylin對接Hive,所以需要把Hive的元數據服務啓動,./bin/hive --service metastore &
(3)啓動 Kylin ./bin/kylin.sh start
(4)在 http://主機名:7070/kylin
查看 Web 頁面,用戶名爲:ADMIN
,密碼爲:KYLIN
(必須大寫)
5)關閉
./bin/kylin.sh stop
三、Kylin 簡單使用