Kylin的概述與架構

kylin概述

kylin的產生背景

Apache Kylin的初衷是解決千億條、萬億條記錄的秒級查詢問題,關鍵是打破查詢時間隨着數據量成線性增長的這個規律

Kylin的工作原理

Apache Kylin的工作原理本質上是MOLAP(Multidimensional Online Analytical Processing)Cube,也就是多維立方體分析。這是數據分析中相當經典的理論,在關係數據庫年代就已經有了廣泛的應用。
Apache Kylin的工作原理就是對數據模型做Cube預計算,並利用計算的結果加速查詢,具體工作過程如下。

  1. 指定數據模型,定義維度和度量。
  2. 預計算Cube,計算所有Cuboid並保存爲物化視圖。
  3. 執行查詢時,讀取Cuboid,運算,產生查詢結果。
    由於Kylin的查詢過程不會掃描原始記錄,而是通過預計算預先完成表的關聯、聚合等複雜運算,並利用預計算的結果來執行查詢,因此相比非預計算的查詢技術,其速度一般要快一到兩個數量級,並且這點在超大的數據集上優勢更明顯。當數據集達到千億乃至萬億級別時,Kylin的速度甚至可以超越其他非預計算技術1000倍以上。

Kylin的技術架構

在這裏插入圖片描述
Apache Kylin系統可以分爲在線查詢和離線構建兩部分,技術架構如圖所示,在線查詢的模塊主要處於上半區,而離線構建則處於下半

從圖可以看出,數據源在左側,目前主要是Hadoop Hive,保存着待分析的用戶數據。根據元數據的定義,下方構建引擎從數據源抽取數據,並構建Cube。數據以關係表的形式輸入,且必須符合星形模型(Star Schema)(更復雜的雪花模型在成文時還不被支持,可以用視圖將雪花模型轉化爲星形模型,再使用Kylin)。MapReduce是當前主要的構建技術。構建後的Cube保存在右側的存儲引擎中,一般選HBase作爲存儲。

完成了離線構建之後,用戶可以從上方查詢系統發送SQL進行查詢分析。Kylin提供了各種Rest API、JDBC/ODBC接口。無論從哪個接口進入,SQL最終都會來到Rest服務層,再轉交給查詢引擎進行處理。這裏需要注意的是,SQL語句是基於數據源的關係模型書寫的,而不是Cube。Kylin在設計時刻意對查詢用戶屏蔽了Cube的概念,分析師只需要理解簡單的關係模型就可以使用Kylin,沒有額外的學習門檻,傳統的SQL應用也很容易遷移。查詢引擎解析SQL,生成基於關係表的邏輯執行計劃,然後將其轉譯爲基於Cube的物理執行計劃,最後查詢預計算生成的Cube併產生結果。整個過程不會訪問原始數據源。

發佈了65 篇原創文章 · 獲贊 63 · 訪問量 2998
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章