Apache Kylin是一個開源的分佈式分析引擎,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。最初於2014年10月1日開源,並於同年11月加入Aapche孵化器項目,並在一年後的2015年11月順利畢業成爲Apache頂級項目,是eBay全球貢獻至Apache軟件基金會(ASF)的第一個項目,也是所有由在中國的華人團隊總體貢獻至Apache的第一個項目。 前端
在eBay,已經上線兩個生產環境平臺,有着諸多的應用,包括用戶行爲分析、點擊分析、商戶分析、交易分析等應用,最新的Streaming分析項目也已經上線。目前在eBay平臺上最大的單個cube包含了超過1000億的數據,90%查詢響應時間小於1.5秒,95%的查詢響應時間小於5秒。同時Apache Kylin在eBay外部也有不少的用戶,包括京東、美團、百度地圖、網易、惟品會、Expedia、Expotional等不少國內外公司也已經在實際環境中使用起來,把Apache Kylin做爲他們大數據分析的基礎之一。 web
在構建生態系統方面:一個應用很難單獨的存在與一個企業中,無論是商業產品仍是開源項目。從一開始,Kylin就定下了只關注核心功能,儘量與整個產業鏈中的其它產品,項目及公司進行合做的方向。好比在前端展示方面和Tableau(Tableau helps people see and understand data)進行充分合做,在存儲方面依靠HBase等。Apache Kylin的生態圈圖從初版到如今沒有太多的變化,只是增長了更多的朋友,例如Apache Zeppelin等,隨着新版架構的改進,整個項目將與Spark,Kafka, Excel/PowerBI, Docker等造成更好的互補和整合,積極融入整個大數據生態圈並打造本身的生態系統。 算法
在eBay,已經上線兩個生產環境平臺,有着諸多的應用,包括用戶行爲分析、點擊分析、商戶分析、交易分析等應用,最新的Streaming分析項目也已經上線。目前在eBay平臺上最大的單個cube包含了超過1000億的數據,90%查詢響應時間小於1.5秒,95%的查詢響應時間小於5秒。同時Apache Kylin在eBay外部也有不少的用戶,包括京東、美團、百度地圖、網易、惟品會、Expedia、Expotional等不少國內外公司也已經在實際環境中使用起來,把Apache Kylin做爲他們大數據分析的基礎之一。 sql
(1) 可擴展超快的OLAP分析引擎 shell
Kylin設計於減小在Hadoop百億級別數據行下的查詢延遲。 數據庫
(2) 基於Hadoop的ANSI SQL(美國國家標準化組織(ANSI)) 數組
Kylin爲Hadoop提供標準SQL支持大部分查詢功能。 緩存
(3) 交互式查詢能力 安全
用戶能夠經過Kylin與Hadoop數據進行低延遲交互,在同一數據集下比HIVE的查詢效率高。 架構
(4) MOLAP Cube(多維立方體)
MOLAP即基於多維數組的存儲模型,也是最原始的OLAP,但須要對數據進行預處理才能造成多維結構。在Kylin中用戶能夠定義數據模型,而且對超過數百億行的數據集進行預構建。關於數據立方體,維度與OLAP相關概念可參考:http://my.oschina.net/yjwxh/blog/629122
(5) 與BI工具無縫集成
Kylin提供了與BI工具例如Tableau的集成。與微軟Excel的集成也將會支持。
(6) 其餘一些亮點
a) 任務的管理與監控
b) 壓縮與編碼的支持
c) 增量更新
d) 與hbase協調處理來下降查詢延遲
e) 基於HyperLogLog的Distinct Count近似算法
f) 提供簡單的WEB界面來管理,構建,監控和查詢cubes
g) 項目及立方體級別的訪問控制安全
h) 支持LDAP集成
(1) Kylin 核心:Kylin OLAP引擎的基礎框架包含:元數據引擎、查詢引擎、任務引擎以及存儲引擎。它也包含了一個提供客戶端請求的REST服務端。
(2) 擴展:基於插件機制的功能與特點的擴展。
(3) 集成:生命週期管理支持任務計劃、ETL、監控和告警系統的集成。
(4) 用戶界面:允在Kylin核心之上擴展的第三方用戶界面。
(5) 驅動:JDBC/ODBC支持不一樣的工具和產品例如Tableau。
Hadoop2.14+, Hive:0.13+, HBase0.98+, JDK1.7+。
一般來講Kylin安裝在Hadoop客戶端機器上。能夠做爲樣例使用,或者爲那些想要集成kylin服務的web站點服務。場景描述以下
對於通常用例來講,上圖中的應用指的是Kylin web端,包含了一個web界面用於cube的建立,查詢以及其餘管理操做。Kylin web也啓動一個查詢引擎用於查詢cube, 一個構建引擎用於構建cubes,,這兩個引擎與hadoop組件交互,例如hive和hbase。
Kylin啓動: kylin.sh start
訪問kylin web客戶端 ADMIN/KYLIN
經過hive shell客戶端測試數據庫表是否生成:
檢測是否在hbase生成相關元數據信息表:
表已經生成,重啓kylin,清除緩存。從新登陸kylin web端,並選擇learn_kylin工程。
登陸執行cube Actions=>Build
當cube build完成100%後,在Query下執行查詢操做,查詢語句:
select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt
查詢全部時間:2.25秒
使用hive直接查詢所用時間:54s
使用spark sql查詢所用時間:首次17s, 以後10-11s左右。6個節點 8g/節點內存
經過比較發現,kylin的查詢效率仍是很高的。