04.Kylin

2020-08-12 18:18:21

1.0 Kylin

1.1 Kylin簡介

1.1.1 Kylin術語

  • Data Warehouse(數據倉庫)

  • Business Intelligence(商業智慧BI) -->數據轉爲知識

  • OLAP

    • 在这里插入图片描述

    • 在这里插入图片描述

    • Presto是ROLAP Kylin是MOLAP

    • OLAP Cube:MOLAP基於多維數據集,一個多維數據整合爲一個OLAP Cube

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 上述的7個Cuboid組成1個Cube

    • 計算順序:先計算角度7,在角度7的基礎上計算其他角度

  • Dimension(維度)和Measure(度量)

1.1.2 Kylin架構

  • 計算層:Metadata(元數據) Cube Build Engine(cube構建引擎)
    • 可以離線和實時,數據儲存在HBASE(隨機實時的查詢)
  • 查詢層:REST Server(rest服務層,對接使用者的SQL)和 Query Engine(查詢引擎層,把SQL轉換爲機器識別的語言)
  • 路由層(Routing):現在關閉了 不是多維的查詢只去HBase上查詢

1.1.3 kylin的特點

  1. 標準SQL介面
    • 作爲一個molap依舊可以進行SQL查詢
  2. 支援超大數據集
  3. 亞秒級響應
  4. 可伸縮性和高吞吐率
  5. BI工具整合

1.2 Kylin安裝

  • 要啓動hadoop歷史伺服器 kylin要通過歷史伺服器來檢視上一個任務有沒有完成,纔可以進行下一個任務

    在这里插入图片描述

1.3 Kylin使用

這是重點章節

  • 7天小合併 28天大合併
  • 通過RESTful API實現
  • 查詢的時候 能做的查詢只有OLAP的查詢–>group by的欄位加上聚合函數;事實表在前;join的時候,要用建模型的join

1.4 Kylin Cube構建原理

1.4.1 維度和度量

1.4.2 Cube和Cuboid

  • 0維的可以不算 kylin也沒有算
  • 0維就是沒有group by

1.4.3 Cube儲存原理

  • 維度字典表:通過維度字典編碼把每一個維度值轉化爲int值

  • 就是形成一個表,用int值來表查詢

1.4.4 Cube構建演算法

構建演算法都是先算最高維的數據

  1. 逐層構建演算法(layer)
  2. 快速構建演算法(inmem)

1.5 Kylin Cube構建優化

1.4 和1.5不重要

1.5.1 使用衍生維度(derived dimension)

  • 使用對應表的外來鍵進行算 不按照選擇的欄位的進行計算—>儘量不使用derived
  • 減少計算量但是會拖慢查詢速度

1.5.2 使用聚合組(Aggregation group)

三種區分開就可以

  • 一種強大的減枝工具
    1. 強制維度(必須要有的維度A)
    2. 層級維度(A->B,B不可以單獨出現)
    3. 聯合維度(AB作爲一個整體 )

1.5.3 Row Key優化

原理理解就可以

  1. 被用作過濾的維度放在前面(優化查詢)
  2. 基數大的維度放在基數小維度前面(優化計算)
    • count distinct的數大的就是基數大
    • kylin在選擇的時候直接選擇的cuboid小的 所以我們儘可能的把基數大的數據放在前面
  • 設計HBase 的rowkey時 要一起查詢的數據儘量放在一起

1.5.4 併發粒度優化

  • segment:hbase中的一張表
  • 主要是增加分割區從而增加並行度
  • 閾值減少到5G

hbase有列族 分割區(region)怎麼來的:自己分裂,預分割區


1.6 Kylin BI工具整合

1.6.1 JDBC

  • kylin對接dwd層(星型模型)
  • 也可以直接對接展示系統就可以不用往繼續走dw層

1.6.2 Zepplin

  • zk的master的埠號也是8080,改爲8089

kylin:多維分析 OLAP

presto:適合複雜的分析