色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

唯品會的OLAP場景中的Presto

吉茹定2年前24瀏覽0評論

唯品會的OLAP場景中的Presto?

Kylin的背景

Kylin 是一個Hadoop生態圈下的MOLAP系統,是ebay大數據部門從2014年開始研發的支持TB到PB級別數據量的分布式Olap分析引擎。其特點包括:

可擴展的超快的OLAP引擎

提供ANSI-SQL接口

交互式查詢能力

MOLAP Cube 的概念

與BI工具可無縫整合

Kylin典型的應用場景如下:

用戶數據存在于Hadoop HDFS中,利用Hive將HDFS文件數據以關系數據方式存取,數據量巨大,在500G以上

每天有數G甚至數十G的數據增量導入

有10個左右為固定的分析維度

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

kylin的總體架構

Kylin 作為一個Olap引擎完成了從數據源抓取數據,ETL到自己的存儲引擎,提供REST服務等一系列工作,其架構如圖所示:

Kylin 大數據時代的OLAP利器

Kylin 的生態圈包括:

Kylin Core: Kylin 引擎的框架,查詢、任務、以及存儲引擎都集中于此,除此之外還包括一個REST 服務器來響應各種客戶端請求。

擴展插件: 各種提供額外特性的插件,如安全認證、SSO等

完整性組件: Job管理器,ETL、監控以及報警

交互界面: 基于Kylin Core之上的用戶交互界面

驅動: 提供了JDBC以及ODBC的連接方式

kylin Cube 多維數據的計算

Kylin的多維計算主要是體現在OLAP Cube的計算。Cube由多個Cuboid組合而成,Cuboid上的數據是原始數據聚合的數據,因此創建Cube可以看作是在原始數據導入時做的一個預計算預處理的過程。Kylin的強大之處在于充分利用了Hadoop的MapReduce并行處理的能力,高效處理導入的數據。

Kylin的數據來自于Hive,并作為一個Hive的加速器希望最終的查詢SQL類似于直接在Hive上查詢。因此Kylin在建立Cube的時候需要從Hive獲取Hive表的元數據。雖然有建立Cube的過程,但是并不想對普通的查詢用戶暴露Cube的存在。

Kylin創建Cube的過程如下圖所示:

Kylin 大數據時代的OLAP利器

根據Cube定義的事實表以及維度表,利用Hive創建一張寬表

抽取事實表上的維度的distinct值,將事實表上的維度以字典樹方式壓縮編碼成目錄,將維度表以字典樹的方式編碼

利用MapReduce從第一步得到的寬表文件作為輸入,創建 N-Dimension cuboid,然后每次根據前一步的結果串行生成 N-1 cuboid, N-2 cuboid … 0-Cuboid

根據生成的Cuboid數據量計算HTable的Region分割策略,創建HTable,將HFile導入進來

Kylin與傳統的OLAP一樣,無法應對數據Update的情況(更新數據會導致Cube的失效,需要重建整個Cube)。面對每天甚至每兩個小時這樣固定周期的增量數據,Kylin使用了一種增量Cubing技術來進行快速響應。

Kylin的Cube可以根據時間段劃分成多個Segment。在Cube第一次Build完成之后會有一個Segment,在每次增量Build后會產生一個新的Segment。增量Cubing依賴已有的Cube Segments和增量的原始數據。增量Cubing的步驟和新建 Cube的步驟類似,Segment之間以時間段進行區分。

增量Cubing所需要面對的原始數據量更小,因此增量Cubing的速度是非常快的。然而隨著Cube Segments的數目增加,一定程度上會影響到查詢的進行,所以在Segments數目到一定數量后可能需要進行Cube Segments的合并操作,實際上merge cube是合成了一個新的大的Cube Segment來替代,Merge操作是一個異步的在線操作,不會對前端的查詢業務產生影響。。