1. 程式人生 > >從0到1玩轉kylin-01-kylin簡單介紹

從0到1玩轉kylin-01-kylin簡單介紹

這篇文章主要解答的一個問題就是:

kylin 是什麼 ? 

根據官方的介紹 http://kylin.apache.org/cn/docs/

這篇部落格也很優秀:http://tech.meiyou.com/?p=97

Apache Kylin™是一個開源的分散式分析引擎,提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay Inc.開發並貢獻至開源社群。

關鍵詞:

開源

任何人都可以接觸到原始碼,目前已經貢獻給Apache基金會,併成為頂級專案

分散式

基於 mr , spark 的底層計算, 實現分散式計算

基於hbase的計算結果儲存,實現分散式呼叫

分析引擎

cube建模,三維立體的資料集合,對於任意二維的組合,都可以實現,也就讓資料分析的需求更加容易落地.

Kylin的核心思想是利用空間換時間,由於查詢方面制定了多種靈活的策略,進一步提高空間的利用率,使得這樣的平衡策略在應用中是值得采用的

Hadoop之上

Hadoop解決了分散式儲存,分散式計算,分散式協調等基礎問題.kylin可以對Hadoop上的資料(hive) 進行SQL操作, 達到一個預處理,預計算的效果.

SQL查詢介面

kylin的結果資料,可以提供SQL查詢. 並且 擁有JDBC API . 方便程式擴充套件

多維度OLAP

STEP1. 根據Cube定義的事實表和維度,在Hive中生成一張中間表;
STEP2. 使用MapReduce,從事實表中抽取維度的Distinct值,並以字典樹的方式壓縮編碼,同時也對所有維度表進行壓縮編碼,生成維度字典;
STEP3. 計算和統計所有的維度組合,並儲存,其中,每一種維度組合,稱為一個Cuboid;
STEP4. 建立HBase Table;
STEP5. 利用step1中間表的資料,使用MapReduce,生成每一種維度組合的資料;
STEP6. 將Cuboid資料轉換成HFile,並匯入到HBase Table中:
STEP7. 更新Cube資訊,清理中間表:
整個Build過程結束。

cube 建模過程結束以後,我們就可以進行多維度的OLAP分析了 

Cube是一種典型的多維資料分析技術,一個Cube可以有多個事實表,多個維表構成。

1、維度組合Cuboid
Cube是所有的維度組合,任一維度的組合稱為cuboid。
理論上來說,一個N維的Cube,便有2的N次方種維度組合(Cuboid),一個Cube包含time,item, location, supplier四個維度,那麼組合便有16種:

Kylin中Cube的Build過程,其實是將所有的維度組合事先計算,儲存於HBase中,以空間換時間,HTable對應的RowKey,就是各種維度組合,指標存在Column中。
這樣,將不同維度組合的查詢SQL,轉換成基於RowKey的範圍掃描,然後對指標進行彙總計算。

2、Kylin構建Cube的過程
如下圖所示:

 

超大規模

只要你有足夠的hbase儲存kylin結果,那規模肯定是巨大的

因為進行了預處理,所以才會快