傳統上,Hadoop(包括MapReduce,Pig以及Hive)通常用于外部私有OLAP Cube引擎準備數據。如今,Zaloni的客戶基于Apache Kylin的OLAP技術實現了實時查詢的能力,這些Cube的事實表包含了400億條以上的原始數據。我們正在幫助客戶統一歸集來自于多個獨立系統的賬單數據,并構建OLAP Cube以支持實時分析,這是以前系統所無法實現的。現在,Hadoop集群都可以做到了。
基于Hadoop的分析演化
Hadoop已經從通用計算能力(MapReduce)的分布式數據平臺演化為一個更強大的平臺。Hadoop及其生態系統已經有能力處理更廣泛的用例,遠超最初設計時的低成本分布式批處理能力。支持了從迭代式的機器學習算法,到OLAP及OLTP系統,這些基于“hadoop集群”的開源分析能力給傳統的大玩家們(Oralce,SAS,Teradata,IBM等)帶來了很大的壓力。
為規模設計
Apache Kylin是開源的多維在線分析處理引擎(MOLAP),名字來源于中國的一種神獸“麒麟”。項目最初誕生于eBay,專為分析處理PB級數據集而設計。這里引用一段Apache基金會2015年12月的Blog:“Apche Kylin是目前為止大數據領域最好的OLAP引擎”,eBay數據服務與解決方案部門高級總監Wilson Pang說到,“在eBay,我們收集用戶在每一個頁面的每一個行為。當其他OLAP引擎掙扎于數據量的極大膨脹時,Kylin可以在毫秒級獲得查詢響應。除此之外,基于Kylin我們還實現了近實時的數據流存儲和分析。總之,Kylin在eBay產品分析平臺中扮演了至關重要的后臺核心組件角色。”
如何工作
Kylin通過預計算實現查詢速度的提升,利用Hive查詢計算多個維度的組合(譯者注:此處原文有誤,正確應為,Kylin是通過Hive獲取數據源,并利用MapReduce計算多個維度的任意組合),計算各類指標的聚合值,并將這些中間結果保存在HBase中。Kylin擁有用戶友好的查詢界面,也支持通過API和JDBC、ODBC提交查詢。查詢引擎基于Apache Calcite查詢處理器和HBase的檢索功能(比如fuzzy row filters)實現結果集快速獲取。HBase的rowkeys利用Trie Data Structure技術實現維度字段字典數據的高效壓縮。
當前,Kylin只支持星型模型,因此每個Cube只能有單一的事實表。
建模向導
設計Cube很容易。假設你已經有了一張Hive的表,建模向導將幫助你一步步走完設計的流程,包括選擇維度(包括層級維度),選擇維表,選擇指標等。也支持按照日期時間分區,使得Cube分段刷新易如反掌,這廣泛用在了流數據的增量式構建。一旦Cube定義好了,我們通過Kylin的監控界面查看Cube的構建進度。
除了原生的Kylin Web界面,你可以通過JDBC查詢OLAP Cube,也可以通過Zeppelin(Zeppelin已經內置了Kylin的解釋器),或者設計良好的REST API。
基于Hadoop的OLAP的其他選項
Kylin是基于Hadoop的OLAP技術的一個開源選項。Apache Lens是另一個,它是一個ROLAP解決方案,并不能實現Kylin這種預計算技術所能達到的快速查詢響應能力。Druid也是一個選項,它采用了自己的集群技術(并不依賴Hadoop)。也有一些第三方的解決方案,聲稱支持Hadoop之上的OLAP能力。
作者:Craig Lukasi,本文已獲翻譯授權。
查看英文原文:http://blog.zaloni.com/apache-kylin-for-olap-on-hadoop