Apache Kylin是一個開源的分佈式分析引擎。徹底由eBay Inc.中國團隊開發git
並貢獻至開源社區。提供Hadoop之上的SQL查詢接口及多維分析(MOLAP)能力以
支持大規模數據能在亞秒內查詢巨大的Hive表(十億百億的海量數據)。
Apache Kylin社區發展
大數據分析面臨的挑戰
Huge volume data
Table scan
Big table joins
Data shuffling
Analysis on different granularity
Runtime aggregation expensive
Map Reduce job
Batch processing
High Concurrency
Kylin安裝
Centos 6.x
NTP
hadoop集羣
-v2.5
-HDFS
-MapReduce
HBase安裝
-v1.1.3
Hive安裝
-v1.2.1或者v2.0
Kylin
-v1.5.1 HBase1.1.3
Cube的構建
Segment
HBase的表
全量構建
增量構建
時間粒度能夠很小--準實時
達到閥值多個小Segment Merge成大的Segment
百度地圖應用的集羣
軟件環境:
CDH+Hive+HBase+Kylin0.71
硬件環境:
Kylin共四臺;
1臺master(100G內存)+3臺slaves(30G內存)
Kylin的展望
Apache Kylin 有多牛?
Apache Kylin 是一個開源的分佈式引擎,爲Hadoop等大型分佈式數據平臺之上的超大規模數據集經過標準SQL查詢及多維分析(OLAP)功能,提供壓秒級的交互式分析能力。
在如今的大數據時代,愈來愈多的企業開始使用Hadoop管理數據,可是現有的業務分析工具(如Tableau,Microstrategy等)往 往存在很大的侷限,如難以水平擴展、沒法處理超大規模數據、缺乏對Hadoop的支持;而利用Hadoop作數據分析依然存在諸多障礙,例如大多數分析師 只習慣使用SQL,Hadoop難以實現快速交互式查詢等等。神獸Apache Kylin就是爲了解決這些問題而設計的。
Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop動物園的重要成員。Apache Kylin是一個開源的分佈式分析引擎,最初由eBay開發貢獻至開源社區。它提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持大 規模數據,可以處理TB乃至PB級別的分析任務,可以在亞秒級查詢巨大的Hive表,並支持高併發。
Apache Kylin於2014年10月在github開源,並很快在2014年11月加入Apache孵化器,於2015年11月正式畢業成爲Apache頂級項 目,也成爲首個徹底由中國團隊設計開發的Apache頂級項目。於2016年3月,Apache Kylin核心開發成員建立了Kyligence公司,力求更好地推進項目和社區的快速發展。
Kylin的基本原理和架構
Kylin的核心思想是預計算,即對多維分析可能用到的度量進行預計算,將計算好的結果保存成Cube,供查詢時直接訪問。把高複雜度的聚合運算、多表鏈接等操做轉換成對預計算結果的查詢,這決定了Kylin可以擁有很好的快速查詢和高併發能力。
說到Cube的構建,Kylin提供了一個稱做Layer Cubing的算法。簡單來講,就是按照
dimension數量從大到小的順序,從Base Cuboid開始,依次基於上一層Cuboid的結果進行再聚合。每一層的計算都是一個單獨的Map Reduce任務。
MapReduce的計算結果最終保存到HBase中,HBase中每行記錄的Rowkey由dimension組成,measure會保存在column family中。爲了減少存儲代價,這裏會對dimension和messure進行編碼。查詢階段,利用HBase列存儲的特性就能夠保證Kylin有良好的快速響應和高併發。
有了這些預計算的結果,當收到用戶的SQL請求,Kylin會對SQL作查詢計劃,並把本該進行的Join、Sum、Count Distinct等操做改寫成Cube的查詢操做。
Kylin提供了一個原生的Web界面,在這裏,用戶能夠方便的建立和設置Cube、管控Cube構建進度,並提供SQL查詢和基本的結果可視化。
根據公開數據顯示,Kylin的查詢性能不僅是針對個別的SQL,而是對上萬種SQL的平均表現,生產環境下90%file查詢可以在3s內返回。在上個月舉辦的Apache Kylin Meetup中,來自美團、京東、百度等互聯網公司分享了他們的使用狀況。例如在京東雲海的案例中,單個Cube最大有8個維度,最大數據條數4億,最大存儲空間800G,30個Cube共佔存儲空間4 T左右。查詢性能上,當QPS在50左右,全部查詢平均在200ms之內,當QPS在200左右,平均響應時間在1s之內。
目前,有愈來愈多的國內外公司將Kylin做爲大數據生產環境中的重要組件,如eBay、銀聯、百度、中國移動等。
Kylin的最新特性
Kylin的最新版本1.5.X引入了很多讓人期待的新功能,可擴展架構將Kylin的三大依賴(數據源、Cube引擎)完全解耦。Kylin將再也不直接依賴於Hadoop/HBase/Hive,而是把Kylin做爲一個可擴展的平臺暴露抽象接口,具體的實現以插件的方式指定所用的數據源、引擎和存儲。
開發者和用戶能夠經過定製開發,將Kylin接入除Hadoop/HBase/Hive之外的大數據系統,好比用kafka代替Hive做數據源,用Spark代替MR作計算引擎,用Cassandra代替HBase作存儲,都將變得更爲簡單。這也保證了Kylin能夠隨平臺技術一塊兒演進,緊跟技術潮流。
在Kylin1.5.x中還對HBase存儲結構進行了調整,將大的Cuboid分片存儲,將線性掃描改良爲並行掃描。基於上萬查詢進行了測試對比結果顯示,分片的存儲結構可以極大提速本來較慢的查詢5-10倍,但對本來較快的查詢提速不明顯,綜合起來平均提速2倍左右。
除此以外,1.5.x還引入了Fast cubing算法,利用Mapper端計算先完成大數據聚合,再將聚合後的結果交給Reducer,從而下降網絡瓶頸的壓力。對500多個Cube任務的實驗顯示,引入Fast cubing後,整體的Cube構建任務提速1.5倍。
kylin的用途
Apache Kylin旨在減小Hadoop在10億及百億規模以上數據級別的狀況下的查詢延遲,目前底層數據存儲基於HBase,具備較強的可伸縮性。Apache Kylin爲Hadoop數據提供了ANSI-SQL接口,而且支持大多數的ANSI-SQL的函數;可以支持在秒級別延遲的狀況下同Hadoop進行交互式查詢;支持多維聯機分析處理數據倉庫(MOLAP Cube);用戶可以定義數據模型;而且經過Apache Kylin可以預建超過10多億行原始記錄的數據模型;可與其餘BI工具無縫集成,包括Tableau,Excel,PowerBI等;並提供了JDBC,ODBC接口;可分佈式部署,Query Server能夠水平擴展,存儲基於HBase也能夠水平擴展。而且Apache Kylin將在後續版本支持流式近實時Cube計算,支持實時數據多維分析等各類場景。