Kylin工作原理、體系架構


核心思想:預計算。

  對多維分析可能用到的度量進行預計算,將計算好的結果保存成Cube,並存在HBase中,供查詢時直接訪問

  將高復雜度的聚合運算、多表連接……操作轉換成對預計算結果的查詢。決定了Kylin擁有很好的快速查詢、高並發能力

  理論基礎:空間換時間

 

Cuboid:Kylin中將維度任意組合成為一個Cuboid

Cube:Kylin中將所有維度組合成為一個Cube,即包含所有的Cubeid

  為了更好地使用Hadoop大數據環境,Kylin從通常用來做數據倉庫的HIve中讀取源數據,使用Mapreduce作為Cube構建的引擎,並將於計算結果保存在HBase中,對外暴露Restful API/JEBC/ODBC的查詢接口。

  Kylin支持標准的ANSI SQL,所以可以和常用分析工具(Tableau、Excel)進行無縫對接

 

restful api:

  符合REST架構設計的API。

  RESTful架構,就是目前最流行的一種互聯網軟件架構。它結構清晰、符合標准、易於理解、擴展方便,所以正得到越來越多網站的采用

  REST,即Representational State Transfer的縮寫

  如果一個架構符合REST原則,就稱它為RESTful架構

  什么是RESTful架構:

  (1)每一個URI代表一種資源;

  (2)客戶端和服務器之間,傳遞這種資源的某種表現層;

  (3)客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"。

 

JDBC

  (Java DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。

  JDBC提供了一種基准,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序

 

ODBC

  開放數據庫連接(Open Database Connectivity,ODBC)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關數據庫的一個組成部分,它建立了一組規范,並提供了一組對數據庫訪問的標准API(應用程序編程接口)。

  這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。

  開放數據庫互連(ODBC)是Microsoft提出的數據庫訪問接口標准。

  開放數據庫互連定義了訪問數據庫API的一個規范,這些API獨立於不同廠商的DBMS,也獨立於具體的編程語言(但是Microsoft的ODBC文檔是用C語言描述的,許多實際的ODBC驅動程序也是用C語言寫的。)

  ODBC規范后來被X/OPEN和ISO/IEC采納,作為SQL標准的一部分,具體內容可以參考《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相關的標准文件。

 

ANSI SQL

  “美國國家標准化組織(ANSI)”是一個核准多種行業標准的組織。

  SQL作為關系型數據庫所使用的標准語言,最初是基於IBM的實現在1986年被批准的。

  1987年,“國際標准化組織(ISO)”把ANSI SQL作為國際標准。

 

 

體系架構:

  

  Kylin是一個MOLAP(多維在線聯機分析處理)系統,將Hive中的數據進行預計算,利用Hadoop的Mapreduce分布式計算框架來實現

  Kylin獲取的表是星型模型結構的。目前建模時,只支持一張事實表,多張維表。

  如果業務需求比較復雜,就要考慮在Hive中進行進一步處理。(比如生成一張大的寬表,或者采用View代替)

  HBase:Kylin中用來存儲OLAP分析的Cube數據的地方,實現多維數據集的交互式查詢

  

  

  

 

 

Cube構建

  Layer Cubing:按照dimension數量從大到小的順序,從Base Cuboid開始,依次基於上一層Cubeid的結果進行再聚合。每一層的計算都是一個單獨的MapReduce任務

    逐層算法,啟動N+1輪MapReduce計算:

      第一輪,讀取原始數據RawData,去掉不相關的列,只保留相關的列。同時對維度列進行壓縮編碼(此處,計算出ABCD組合,即base cuboid)

      此后每一輪MapReduce,輸入是上一輪的輸出,以重用之前的計算結果,去掉要聚合的維度,算出新的Cuboid,直到最后算出所有的Cubeid

  

    1.5.x開始引入Fast(in-mem) cubing算法,利用Mapper端計算先完成大部分聚合,再將聚合后的結果交給Reducer,從而降低對網絡瓶頸的壓力。

    

    MapReduce的計算結果最終保存到HBase中,HBase中每行記錄的Rowkey由dimention組成,measure會保存再Column family中。為了減少存儲代價,會對dimension和measure進行編碼。

 

Kylin的Sql查詢

  Cube構建完成后,可以查詢維度對應的度量值了。

  查詢時,SQL語句被SQL解析器翻譯成一個解析計划,從這個計划可以准確知道用戶要查哪些表,怎樣join起來,有哪些過濾條件。Kylin用這個計划去匹配找尋到合適的Cube

  如果有Cube命中,這個計划會發送到存儲引擎,翻譯成對存儲(默認HBase)相應的Scan操作

   group by、過濾條件的列,用來找到Cuboid,過濾條件會被轉換成Scan的開始、結束值,以縮小Scan的范圍

   Scan的result、Rowkey會被反向解碼成各個dimension的值,Value會被解碼成Metrics值,同時利用HBase列存儲的特性,可以保證Kylin有良好的快速響應、高並發

 

Kylin的特性、生態圈

  1.可擴展、超快OLAP引擎

  2.Hadoop ANSI SQL 接口

  3.交互式查詢能力

  4.多維立方體MOLAP Cube

  5.與BI工具(Tableau)無縫整合

  6.其他特性

    

 

LDAP:

  LDAP是輕量目錄訪問協議,英文全稱是Lightweight Directory Access Protocol,一般都簡稱為LDAP。

  它是基於X.500標准的,但是簡單多了並且可以根據需要定制。與X.500不同,LDAP支持TCP/IP,這對訪問Internet是必須的。

  LDAP的核心規范在RFC中都有定義,所有與LDAP相關的RFC都可以在LDAPman RFC網頁中找到。

  LDAP目錄以樹狀的層次結構來存儲數據。如果你對自頂向下的DNS樹或UNIX文件的目錄樹比較熟悉,也就很容易掌握LDAP目錄樹這個概念了。就象DNS的主機名那樣,

  LDAP目錄記錄的標識名(Distinguished Name,簡稱DN)是用來讀取單個記錄,以及回溯到樹的頂部。

 

Kylin生態圈

  

 

 ETL: Extract-Transform-Load

  用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。

  ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。

  ETL是構建數據倉庫的重要一環,用戶從 數據源抽取出所需的數據,經過 數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。

  

    

  

 

 

  

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM