Hadoop上的OLAP – Apache Kylin

這篇文章是關於什麼是Kylin,其架構以及Kylin中的一些挑戰和優化技術。

有許多" Hadoop中的OLAP"工具可用:開源(Kylin,Druid),商業(Atscale,Kyvos)。 我使用Apache Kylin是因為與Druid相比,kylin更適合處理歷史數據。

什麼是麒麟

Kylin是一個開源的分佈式分析引擎,它在Hadoop上提供SQL接口和多維分析(OLAP),支持超大型數據集。 Apache kylin使用水平可伸縮計算框架(MR,Spark)預先計算OLAP多維數據集,並將多維數據集存儲到可靠且可伸縮的數據存儲區(HBase)中。

為什麼選擇麒麟

在大數據的大多數用例中,我們看到的挑戰是要在幾秒鐘內獲得查詢結果。 掃描數據庫並返回結果需要大量時間。 這就是Hadoop中OLAP的概念出現的地方,它結合了OLAP和Hadoop的優勢,因此大大提高了查詢延遲。

Hadoop上的OLAP – Apache Kylin

這個怎麼運作?

以下是有關kylin如何獲取數據並保存結果的步驟。

·首先,同步輸入源表。 在大多數情況下,它會從Hive讀取數據

·接下來,它運行mapreduce / spark作業(基於您選擇的引擎)以預先計算並生成具有所有可能的維度組合的每個級別的Cube,並計算不同級別的所有指標

·最後,它將多維數據集數據存儲在HBase中,其中維度是行鍵(rowkey),而度量是列族(col)

·此外,它利用Zookeeper進行工作協調

架構:

Hadoop上的OLAP – Apache Kylin

在Kylin中,發佈了許多cubing算法,以下是三種cubing類型:

1.按層

2.快速搜索="內存中"

3.按Spark

在提交求職作業時,Kylin會為"按層"和"內存中"預先分配步驟,但是它只選擇一個要執行,而另一個將被跳過。 默認情況下,該算法是"自動"的,Kylin需要在從Hive中獲取數據後選擇一個。

Hadoop上的OLAP – Apache Kylin

到目前為止,我們已經瞭解了麒麟如何工作。 現在,讓我們看看真正的挑戰以及如何解決這些挑戰,以及如何優化多維數據集構建時間。

解決的挑戰和解決方法:

1.在Kylin 2.2中,無法更改小數列的數據類型。 缺省情況下,kylin將double(十進制)(19,4)用於double類型的度量標準列。

為了更改數據類型,解決方法是通過使用"元數據備份"和"還原"命令修改元數據來更改多維數據集的元數據。 (
https://kylin.apache.org/docs/howto/howto_backup_metadata.html)

備份後,您可以在/ cube_desc文件夾中找到多維數據集描述,找到您的多維數據集,然後對其進行編輯。

完成上述更改後,重新啟動kylin。 確保運行以下命令並重新啟動kylin,因為它期望不會手動編輯多維數據集簽名,因此請執行此檢查

2.在麒麟2.3.2中,當我們查詢從表名中選擇*時,麒麟在指標列中顯示空/空值。 這是因為kylin僅存儲聚合值,並且僅當您在查詢中調用group by子句時才會顯示值。 但是,如果需要獲取結果,則在任何多維數據集都無法回答查詢的情況下,可以使用kylin查詢下推功能。 Kylin支持通過JDBC將此類查詢下推到Hive,SparkSQL,Impala等備份查詢引擎。

3.有時,即使您丟棄並再次運行或恢復它,作業構建也會連續失敗。 原因是Zookeeper可能已經有一個kylin目錄,所以解決方法是刪除zookeeper上的kylin,然後多維數據集成功構建

kylin.properties中tweek的有用配置用於優化:

1.
kylin.storage.hbase.region-cut-gb:它定義創建HBase表時區域的大小。 默認值為每個區域" 5"(GB)。 對於較小或中等的多維數據集來說,它可能太大了,因此您可以給它一個較小的值,以創建更多的區域,因此可以獲得更好的查詢性能。

1. kylin.cube.algorithm:它定義作業引擎將選擇的Cubing算法; 其默認值為"自動",這意味著引擎將通過對數據進行採樣來動態選擇算法("層"或"內存")。 如果您非常瞭解Kylin和數據/集群,則可以直接設置首選算法。

1.
kylin.storage.hbase.hfile-size-gb:GB的hfile大小,較小的hfile導致MR工作步驟中的reduce減少,因此會更快。

摘要

本文的主要結論是,只要我們使用kylin提供的"聚合組"(AGG)功能來控制不必要的長方體組合,Apache Kylin就會顯著改善查詢延遲。 此功能還有助於減少多維數據集的構建時間和查詢時間。

希望這篇文章對Apache Kylin有所啟發。 學習愉快!

(本文翻譯自Neethu M V的文章《OLAP on Hadoop – Apache Kylin》,參考:https://medium.com/@
mvneethu90/olap-in-hadoop-apache-kylin-bf0377d8b44f)


分享到:


相關文章: