1. Kylin 定義
Apache Kylin是一個(gè)開源的分布式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規(guī)模數(shù)據(jù),最初由eBay Inc開發(fā)并貢獻(xiàn)至開源社區(qū)。它能在亞秒內(nèi)查詢巨大的Hive表。
2. Kylin架構(gòu)

1)REST Server
REST Server是一套面向應(yīng)用程序開發(fā)的入口點(diǎn),旨在實(shí)現(xiàn)針對(duì)Kylin平臺(tái)的應(yīng)用開發(fā)工作。 此類應(yīng)用程序可以提供查詢、獲取結(jié)果、觸發(fā)cube構(gòu)建任務(wù)、獲取元數(shù)據(jù)以及獲取用戶權(quán)限等等。另外可以通過Restful接口實(shí)現(xiàn)SQL查詢。
2)查詢引擎(Query Engine)
當(dāng)cube準(zhǔn)備就緒后,查詢引擎就能夠獲取并解析用戶查詢。它隨后會(huì)與系統(tǒng)中的其它組件進(jìn)行交互,從而向用戶返回對(duì)應(yīng)的結(jié)果。
3)路由器(Routing)
在最初設(shè)計(jì)時(shí)曾考慮過將Kylin不能執(zhí)行的查詢引導(dǎo)去Hive中繼續(xù)執(zhí)行,但在實(shí)踐后發(fā)現(xiàn)Hive與Kylin的速度差異過大,導(dǎo)致用戶無法對(duì)查詢的速度有一致的期望,很可能大多數(shù)查詢幾秒內(nèi)就返回結(jié)果了,而有些查詢則要等幾分鐘到幾十分鐘,因此體驗(yàn)非常糟糕。最后這個(gè)路由功能在發(fā)行版中默認(rèn)關(guān)閉。
4)元數(shù)據(jù)管理工具(Metadata)
Kylin是一款元數(shù)據(jù)驅(qū)動(dòng)型應(yīng)用程序。元數(shù)據(jù)管理工具是一大關(guān)鍵性組件,用于對(duì)保存在Kylin當(dāng)中的所有元數(shù)據(jù)進(jìn)行管理,其中包括最為重要的cube元數(shù)據(jù)。其它全部組件的正常運(yùn)作都需以元數(shù)據(jù)管理工具為基礎(chǔ)。 Kylin的元數(shù)據(jù)存儲(chǔ)在hbase中。
5)任務(wù)引擎(Cube Build Engine)
這套引擎的設(shè)計(jì)目的在于處理所有離線任務(wù),其中包括shell腳本、Java API以及Map Reduce任務(wù)等等。任務(wù)引擎對(duì)Kylin當(dāng)中的全部任務(wù)加以管理與協(xié)調(diào),從而確保每一項(xiàng)任務(wù)都能得到切實(shí)執(zhí)行并解決其間出現(xiàn)的故障。
3. Kylin特點(diǎn)
Kylin的主要特點(diǎn)包括支持SQL接口、支持超大規(guī)模數(shù)據(jù)集、亞秒級(jí)響應(yīng)、可伸縮性、高吞吐率、BI工具集成等。
1)標(biāo)準(zhǔn)SQL接口:Kylin是以標(biāo)準(zhǔn)的SQL作為對(duì)外服務(wù)的接口。
2)支持超大數(shù)據(jù)集:Kylin對(duì)于大數(shù)據(jù)的支撐能力可能是目前所有技術(shù)中最為領(lǐng)先的。早在2015年eBay的生產(chǎn)環(huán)境中就能支持百億記錄的秒級(jí)查詢,之后在移動(dòng)的應(yīng)用場(chǎng)景中又有了千億記錄秒級(jí)查詢的案例。
3)亞秒級(jí)響應(yīng):Kylin擁有優(yōu)異的查詢相應(yīng)速度,這點(diǎn)得益于預(yù)計(jì)算,很多復(fù)雜的計(jì)算,比如連接、聚合,在離線的預(yù)計(jì)算過程中就已經(jīng)完成,這大大降低了查詢時(shí)刻所需的計(jì)算量,提高了響應(yīng)速度。
4)可伸縮性和高吞吐率:?jiǎn)喂?jié)點(diǎn)Kylin可實(shí)現(xiàn)每秒70個(gè)查詢,還可以搭建Kylin的集群。
5)BI工具集成
Kylin可以與現(xiàn)有的BI工具集成,具體包括如下內(nèi)容。
ODBC:與Tableau、Excel、PowerBI等工具集成
JDBC:與Saiku、BIRT等Java工具集成
RestAPI:與JavaScript、Web網(wǎng)頁集成
Kylin開發(fā)團(tuán)隊(duì)還貢獻(xiàn)了Zepplin的插件,也可以使用Zepplin來訪問Kylin服務(wù)。
4. Kylin安裝
4.1 Kylin依賴環(huán)境
安裝Kylin前需先部署好Hadoop、Hive、Zookeeper、HBase,并且需要在/etc/profile中配置以下環(huán)境變量HADOOP_HOME,HIVE_HOME,HBASE_HOME,記得source使其生效。
1)安裝JDK,Hadoop參考
http://www.itdecent.cn/p/2a947044f2dc
2)安裝 Zookeeper參考
http://www.itdecent.cn/p/8935a8a34d6a
3)安裝 Hbase參考
http://www.itdecent.cn/p/5613ceb3ab38
4)安裝Hive參考
http://www.itdecent.cn/p/741fa67cf66b
hive需要在環(huán)境變量配置HIVE_CONF
export HIVE_CONF=$HIVE_HOME/conf
export PATH=$PATH:$HIVE_CONF
4.2 Kylin搭建
1)上傳Kylin安裝包apache-kylin-3.0.2-bin.tar.gz
2)解壓apache-kylin-3.0.2-bin.tar.gz到/usr/local/src
(py2) [root@bigdata101 src]# tar -zxvf apache-kylin-3.0.2-bin.tar.gz
4.3 Kylin兼容性問題
修改/usr/local/src/apache-kylin-3.0.2-bin/bin/find-spark-dependency.sh,排除沖突的jar包
需要增加的內(nèi)容:! -name 'jackson' ! -name 'metastore'
注意前后保留空格

4.4 Kylin啟動(dòng)
(1)啟動(dòng)Kylin之前,需先啟動(dòng)Hadoop(hdfs,yarn,jobhistoryserver)、Zookeeper、Hbase
啟動(dòng)jobhistoryserver命令:
(py2) [root@bigdata101 src]# mr-jobhistory-daemon.sh start historyserver
(2)啟動(dòng)Kylin
(py2) [root@bigdata101 apache-kylin-3.0.2-bin]# bin/kylin.sh start
Retrieving hadoop conf dir...
KYLIN_HOME is set to /usr/local/src/apache-kylin-3.0.2-bin
Retrieving hive dependency...
Retrieving hbase dependency...
Retrieving hadoop conf dir...
Retrieving kafka dependency...
Retrieving Spark dependency...
Start to check whether we need to migrate acl tables
Using cached dependency...
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
SLF4J: Class path contains multiple SLF4J bindings.
啟動(dòng)之后查看各個(gè)節(jié)點(diǎn)進(jìn)程:
(py2) [root@bigdata101 apache-kylin-3.0.2-bin]# xcall.sh jps
--------- bigdata101 ----------
106912 RunJar
80419 HMaster
107554 Jps
24166 ResourceManager
3415 QuorumPeerMain
82073 JobHistoryServer
23516 NameNode
23836 SecondaryNameNode
--------- bigdata102 ----------
9760 QuorumPeerMain
88337 Jps
86706 HRegionServer
29333 NodeManager
29195 DataNode
--------- bigdata103 ----------
17507 DataNode
75495 Jps
73785 HRegionServer
3179 QuorumPeerMain
17629 NodeManager
在http://bigdata101:7070/kylin查看Web頁面

用戶名為:ADMIN,密碼為:KYLIN
3)關(guān)閉Kylin
(py2) [root@bigdata101 apache-kylin-3.0.2-bin]# bin/kylin.sh stop