多角度帶你認清Kylin的工作原理

寫在前面: 博主是一名軟件工程系大數據應用開發專業大二的學生,暱稱來源於《愛麗絲夢遊仙境》中的Alice和自己的暱稱。作爲一名互聯網小白,寫博客一方面是爲了記錄自己的學習歷程,一方面是希望能夠幫助到很多和自己一樣處於起步階段的萌新。由於水平有限,博客中難免會有一些錯誤,有紕漏之處懇請各位大佬不吝賜教!個人小站:http://alices.ibilibili.xyz/ , 博客主頁:https://alice.blog.csdn.net/
儘管當前水平可能不及各位大佬,但我還是希望自己能夠做得更好,因爲一天的生活就是一生的縮影。 我希望在最美的年華,做最好的自己

        在之前的博客中,博主已經爲大家帶來了Kylin的簡單介紹環境搭建以及簡單入門使用。本篇博客,博主爲大家帶來的是關於Kylin工作原理的介紹!

在這裏插入圖片描述


Kylin的工作原理

        Apache Kylin的工作原理本質上是 MOLAP(多維立方體分析)

維度和度量

  • 維度就是觀察數據的角度 ,例如:

        電商的銷售數據,可以從時間的維度來觀察,也可以細化從時間和地區的維度來觀察。

        統計時,可以把維度值相同的記錄聚合在一起,然後應用聚合函數做累加、平均、去重計數等聚合計算。

  • 度量就是被聚合的統計值,也是聚合運算的結果

例如:

時間(維度) 銷售額(度量)
2019 1Q 1.7M
2019 2Q 2.1M
2019 3Q 1.6M
2019 4Q 1.8M
時間(維度) 地區(維度)
2019 1Q 中國
2019 1Q 北美
2019 2Q 中國
2019 2Q 北美
2019 3Q 中國
2019 3Q 北美
2019 4Q 中國
2019 4Q 北美

Cube 和 Cuboid

  • 一個數據表或數據模型上的字段要麼是維度,要麼是度量(可以被聚合)
  • 給定一個數據模型,可以對其上的所有維度進行組合。對於N個維度來說,組合的所有可能性共有2 的N 次方種
  • 對於每一種維度的組合,將度量做聚合運算,然後將運算的結果保存爲一個物化視圖,稱爲Cuboid(立方形)

在這裏插入圖片描述

  • 所有維度組合的Cuboid作爲一個整體,被稱爲Cube(立方體)一個Cube就是許多按維度聚合的物化視圖的集合
    在這裏插入圖片描述
    在這裏插入圖片描述

關於數據立方體Cube

  • Cube 是所有 dimession 的組合
  • 每一種 dimession 的組合稱之爲cuboid(立方形)。某一有 n 個 dimession 的 cube 會有 2^n個 cuboid。
  • 數據立方體只是多維模型的一個形象的說法。

爲什麼叫立方體?

  • 立方體本身只有三維,但多維模型不僅限於三維模型,可以組合更多的維度。
  • 爲了與傳統關係型數據庫的二維表區別開來,纔有了數據立方體的叫法。

工作原理

        Apache Kylin的工作原理是對數據模型做Cube預計算,並利用計算的結果加速查詢。具體工作過程如下:

  1. 指定數據模型,定義維度和度量
  2. 預計算Cube,計算所有Cuboid並保存爲物化視圖
  3. 執行查詢時,讀取Cuboid,運算,產生查詢結果

高效OLAP分析:

  • Kylin的查詢過程不會掃描原始記錄,而是通過預計算預先完成表的關聯、聚合等複雜運算
  • 利用預計算的結果來執行查詢,相比非預計算的查詢技術,其速度一般要快一到兩個數量級,在超大的數據集上優勢更明顯
  • 數據集達到千億乃至萬億級別時,Kylin的速度可以超越其他非預計算技術1000倍以上

技術架構

        Apache Kylin系統可以分爲在線查詢離線構建兩部分

        在線查詢模式主要處於上半部分,離線構建處於下半部分

在線查詢

在這裏插入圖片描述
離線構建
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

        以下爲Kylin技術架構的具體內容:

  1. 數據源主要是Hadoop Hive,數據以關係表的形式輸入,且必須符合星形模型,保存着待分析的用戶數據。根據元數據的定義,構建引擎從數據源抽取數據,並構建Cube
  2. Kylin可以使用MapReduce或者Spark作爲構建引擎。構建後的Cube保存在右側的存儲引擎中,一般選用HBase作爲存儲
  3. 完成了離線構建後,用戶可以從上方查詢系統發送SQL進行查詢分析
  4. Kylin提供了各種Rest API、JDBC/ODBC接口。無論從哪個接口進入,SQL最終都會來到Rest服務層,再轉交給查詢引擎進行處理
  5. SQL語句是基於數據源的關係模型書寫的,而不是Cube

        ■ Kylin在設計時,刻意對查詢用戶屏蔽了Cube的概念

        ■ 分析師只需要理解簡單的關係模型就可以使用Kylin,沒有額外的學習門檻,傳統的SQL應用也很容易遷移

        ■ 查詢引擎解析SQL,生成基於關係表的邏輯執行計劃,然後將其轉譯爲基於Cube的物理執行計劃,最後查詢預計算生成的Cube併產生結果,整個過程不會訪問原始數據源


總結

        本篇博客從多個角度爲大家揭示了Kylin的工作原理。相信在看之前對Kylin的工作原理還一頭霧水的朋友,看完一定能夠恍然大悟😎

        如果以上過程中出現了任何的紕漏錯誤,煩請大佬們指正😅

        受益的朋友或對大數據技術感興趣的夥伴記得點贊關注支持一波🙏

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章