Apache Kylin 入門 1 - 基本概念

Apache Kylin 入門系列目錄web

Apache Kylin 簡介

Apache Kylin 是一個開源的分佈式分析引擎,提供 Hadoop/Spark 之上的 SQL 查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由 eBay Inc. 開發並貢獻至開源社區,它能在亞秒內查詢巨大的 Hive 表。算法

Apache Kylin 的特性:數據庫

  • 可擴展的超快 OLAP 引擎: Kylin 是爲減小在 Hadoop/Spark 上百億規模數據查詢延遲而設計;
  • Hadoop ANSI SQL 接口: Kylin 爲 Hadoop 提供標準 SQL 支持大部分查詢功能;
  • 交互式查詢能力: 經過 Kylin,用戶能夠與 Hadoop 數據進行亞秒級交互,在一樣的數據集上提供比 Hive 更好的性能;
  • 多維立方體(MOLAP Cube): 用戶可以在 Kylin 裏爲百億以上數據集定義數據模型並構創建方體;
  • 與 BI 工具無縫整合: Kylin 提供與 BI 工具的整合能力,如 Tableau,PowerBI/Excel,MSTR,QlikSense,Hue 和 SuperSet

其餘特性:編程

  • Job 管理與監控
  • 壓縮與編碼
  • 增量更新
  • 利用 HBase Coprocessor
  • 基於 HyperLogLog 的 Dinstinc Count 近似算法
  • 友好的 web 界面以管理,監控和使用立方體
  • 項目及表級別的訪問控制安全
  • 支持 LDAP、SSO

數據倉庫基本概念

數據倉庫(Data Warehouse)

數據倉庫是一種信息系統的資料儲存理論,此理論強調的是利用某些特殊的資料儲存方式,讓所包含的資料特別有利於分析和處理,從而產生有價值的資訊,並可依此作出決策。安全

利用數據倉庫的方式存放的資料,具備一旦存入,便不會隨時間發生變更的特性,此外,存入的資料一定包含時間屬性,一般一個數據倉庫中會含有大量的歷史性資料,而且它可利用特定的分析方式,從其中發掘出特定的資訊。數據結構

STAGE 層

STAGE 層做爲數據緩衝層,主要負責採集不一樣類型的業務系統數據並保存必定期限內的相關業務數據,完成不一樣類型數據源的統一臨時存儲,同時避免 ETL 操做對業務系統性能形成影響,STAGE 層數據在數據結構、數據之間的邏輯關係上都與業務系統基本保持一致。架構

ODS 數據層

ODS(Operational Data Store)層數據來源於 STAGE 層,它的數據通過了對 STAGE 層數據的清洗,包括編碼表去重、去空、垃圾數據過濾、數據類型規則化等。分佈式

另外 ODS 做爲 DW 和 STAGE 層的橋樑,也能夠實現指標一致性的管理,將不一樣系統不一樣部門相同指標的定義及指標數據按照業務規則取其一,保證不一樣源數據的數據一致性,也能夠知足用戶對明細數據的查詢要求,直接從ODS層獲取明細數據進行分析。工具

DWD 數據層

DWD(Data Warehouse Detail)層數據是將 ODS 層數據根據數據清洗規則,通過質量檢查、數據清洗、轉換、標準化後,造成符合質量要求的公共數據中心。oop

把 ODS 數據表結構改變成項目主題數據倉庫的表結構,對 DWD 層的全部表添加了代理鍵,標準化了業務系統編碼類型不統一的問題,創建了數據倉庫維度表和事實表的關聯體系,也爲緩慢變化維的實現奠基了基礎。

DWC 數據層

DWC(Data Warehouse Center)層主要管理固化報表的數據存儲,數據主要來源於 DWD 層,根據前臺所需數據創建物理模型,使用 ETL 抽取 DWD 層數據推送給 DWC 層,這樣顯著減小前臺應用直接關聯 DWD 層查詢明細數據的成本,提升平臺數據獲取的速度。

DM 數據層

DM(Data Mart)層即數據集市,將指標與維度創建物理模型組成數據集市,這是 OLAP 的數據基礎。該層實現了合併不一樣系統的數據源來知足面向主題的業務需求,它的建模是終端用戶驅動的,也是由業務需求驅動的。按主題,維度及 KPI 指標對 DM 層進行模型設計、建模,DM 層數據是將 DWD 層數據進行進一步整合、轉換、彙總、計算等 ETL 操做處理獲取的。

數據倉庫架構案例

Kylin 基本概念

事實表(Fact Table)

事實表(Fact Table)是指存儲有事實記錄的表,如系統日誌、銷售記錄等;事實表的記錄在不斷地動態增加,因此它的體積一般遠大於其餘表。

維度表(Dimension Table)

維度表或維表,有時也稱查找表(Lookup Table),是與事實表相對應的一種表。它保存了維度的屬性值,能夠跟事實表作關聯;至關於將事實表上常常重複出現的屬性抽取、規範出來用一張表進行管理。

維度表有如下幾個優勢:

  • 縮小了事實表的大小;
  • 便於維度的管理和維護,沒必要對事實表進行改動;
  • 維度表能夠爲多個事實表重用,以減小重複工做。

維度(Dimension)

維度是觀察數據的角度,通常是一組離散的值;所以統計時能夠把維度值相同的記錄聚合在一塊兒,而後進行聚合計算。

在 Kylin Cube 構建中,維度能夠分爲如下幾種類型:

  • Mandatory:必需維度,查詢中老是出如今 where 條件中的維度;若是一個維度被標記爲 「Mandatory」,會認爲全部的查詢都會包含此維度,全部不含此維度的組合,在 Cube 構建時都會被剪枝(不計算);
  • Hierarchy:層級維度,若是多個維度之間有層級(或包含)的關係,經過設置爲 「Hierarchy」,那些不知足層級的組合會被剪枝;若是A, B, C是層級,而且A>B>C,那麼只須要計算組合A, AB, ABC; 其它組合如B, C, BC, AC將不作預計算;
  • Joint:聯合維度,有些維度每每一塊兒出現,或者它們的基數很是接近(有 1:1 映射關係),例如 「用戶 ID」老是對應惟一的 「用戶名」;
  • Derived:衍生維度:維度表的列值,能夠從它的主鍵值衍生而來,那麼經過將這些列定義爲衍生維度,能夠僅將主鍵加入到 Cube 的預計算來,而在運行時經過使用維度表的快照,衍生出非主鍵列的值,從而起到降維的效果。

度量(Measure)

度量是被聚合的統計值,也是聚合運算的結果,它通常是連續的值。

OLAP(Online Analytical Process)

OLAP(Online Analytical Process),聯機分析處理,以多維度的方式分析數據,並且可以彈性地提供上卷(Roll-up)、下鑽(Drill-down)和透視分析(Pivot)等操做,它是呈現集成性決策信息的方法,多用於決策支持系統、商務智能或數據倉庫。其主要的功能在於方便大規模數據分析及統計計算,可對決策提供參考和支持。

與之相區別的是聯機交易處理(OLTP),聯機交易處理,更側重於基本的、平常的事務處理,包括數據的增刪改查。

星型模型

星型模型是一種多維的數據關係,它由一個事實表和一組維表組成。每一個維表都有一個維做爲主鍵,全部這些維的主鍵組合成事實表的主鍵。強調的是對維度進行預處理,將多個維度集合到一個事實表,造成一個寬表。

這也是咱們在使用 Hive 時,常常會看到一些大寬表的緣由,大寬表通常都是事實表,包含了維度關聯的主鍵和一些度量信息,而維度表則是事實表裏面維度的具體信息,使用時候通常經過 Join 來組合數據,相對來講對 OLAP 的分析比較方便。

星型模型

雪花模型

當有一個或多個維表沒有直接鏈接到事實表上,而是經過其餘維錶鏈接到事實表上時,其圖解就像多個雪花鏈接在一塊兒,故稱雪花模型。

雪花模型是對星型模型的擴展,它對星型模型的維表進一步層次化,原有的各維表可能被擴展爲小的事實表,造成一些局部的"層次"區域,這些被分解的表都鏈接到主維度表而不是事實表。

雪花模型更加符合數據庫範式,減小數據冗餘,可是在分析數據的時候,操做比較複雜,須要 Join 的表比較多因此其性能並不必定比星型模型高。

雪花模型

數據立方體(Data Cube)

數據立方體容許多維對數據建模和觀察,它由維和事實定義,它是對多維模型的一個形象的說法。

從表方面看,數據立方體是三維的,可是多維模型不只限於三維模型,能夠組合更多的模型,好比四維、五維等等,好比咱們根據時間、地域、產品和產品型號這四個維度,統計銷售量等指標。

對於每一種維度的組合,將度量作聚合運算,而後將運算的結果保存爲一個物化視圖,稱爲 Cuboid。全部維度組合的 Cuboid 做爲一個總體,被稱爲 Cube。因此簡單來講,一個 Cube 就是許多按維度聚合的物化視圖的集合。

Cube Segment 是指針對源數據中的某一個片斷,計算出來的 Cube 數據。一般數據倉庫中的數據數量會隨着時間的增加而增加,而 Cube Segment 也是按時間順序來構建的。

Cuboid 示例:Cuboid[Time, Locatio] = select Time, Location, sum(GMV) as GMV from T group by Time, Location

Cuboid Cuboid 示例

Cube 構建常見概念

  • Table - 表, 是 Cube 的數據源;在建立 Cube 以前,須要從數據源(一般爲 Hive)同步表的元數據,包含表名、列名、列屬性等。
  • Data Model - 數據模型,定義了由若干張表的一個鏈接關係。支持星型模型的多維分析;在建立Cube以前,用戶需定義這麼一個數據模型。
  • Cube - 數據立方體,是一種多維分析的技術,經過預計算,將計算結果存儲在某多個維度值所映射的空間中;在運行時經過對 Cube 的再處理而快速獲取結果。
  • Partition - 分區,用戶能夠定義一個分區日期或時間列,隨後對 Cub e的構建按此列的值範圍而進行,從而將 Cube 分紅多個 Segment。
  • Cube Segment - 每一個 Cube Segment 是對特定時間範圍的數據計算而成的 Cube,每一個 Segment 對應一張 HBase 表。
  • Aggregation Group - 聚合組,每一個聚合組是所有維度的一個子集;經過將不少個維度分組,並把常一塊兒使用的維度放在一塊兒,能夠有效下降 Cube 的組合數。

Any Code,Code Any!

掃碼關注『AnyCode』,編程路上,一塊兒前行。

相關文章
相關標籤/搜索