基于大數據的OLAP技術,四個角度一篇講明白
在線分析處理(Online Analytical Processing,OLAP)技術是大數據技術中快速解決多維分析問題的方法之一。由于OLAP需要快速讀取大量數據,因此它對數據的讀取吞吐量和計算效率有很高的要求。目前,基于大數據的OLAP技術一般從面向讀的存儲優化、預計算、支持靈活分析等方面不斷提高,近幾年出現了很多令人激動的產品。
一、OLAP技術介紹
OLAP技術讓用戶能夠從多個角度交互地分析多維數據,從中發現規律,用來做決策支持。在分析過程中,用戶需要獲取和處理歷史數據(一段時期內),有時也需要獲取和處理實時數據,此時查詢吞吐量和相應時間是關鍵性能指標。
1.OLAP分析操作
OLAP分析一般需要設計數據立方體,立方體由分析的維度(dimension)、層級(level)和指標(metric)來定義,支持上卷(roll-up)、鉆取(drill-down)、切片(slicing)和切塊(dicing)等分析操作。
- 上卷:將數據按一個或多個維度向更高層級聚合,例如基于縣級銷售額統計市級銷售額。
- 鉆取:上卷的反向操作。
- 切片和切塊:從OLAP多維數據集中按選擇維度的特定數值選取出一組特定的數據,例如一季度的所有數據。
- 切塊:從OLAP多維數據集中按選擇維度的特定數值區間選取出一組特定的數據,例如2月到5月的所有數據。
2.與OLTP的區別
與OLAP相對的是OLTP。OLTP的全稱是聯機事務處理(Online Transaction Processing),是傳統關系型數據庫的主要應用。OLTP的特點是實現插入、更新、刪除等事務的在線處理,但系統需要保證事務的完整性,滿足ACID原則。在OLTP中,事務的吞吐量是關鍵性能指標,以每秒事務數來衡量效率。
由于嚴格的約束限制,支持OLTP的數據系統通常無法滿足OLAP大規模數據讀取與處理的需求,二者對數據讀取的吞吐量要求相差不止一個量級,因此OLAP系統的技術選型一般與OLTP不同,數據的組織方式也不同。
二、實時OLAP系統的兩種架構模型
隨著DT時代的到來,越來越多的業務需求要求大數據系統既能處理歷史數據,又能進行實時計算,同時越來越要求運營的時效性,以便即時評估運營活動效果,即時調整策略。針對實時大數據統計分析系統,有兩種架構設計路線:Lambda和Kappa。
- Lambda架構包含三層:批處理層(Batch Layer)、速度層(Speed Layer)和服務層(Serving Layer)。批處理層對歷史數據進行預處理,速度層處理新增實時數據,服務層實現上述兩層處理結果的融合,將其合并為統一視圖,為用戶提供全時域數據分析查詢。每層可以分別選擇合適的大數據組件來構建系統,比如用Spark構建批處理層、用Flink構建速度層。
- Kappa架構在Lambda架構的基礎上去掉了批處理層,對速度層進行了改進,使其既能夠支持實時數據處理,又能夠支持歷史數據處理。Kappa架構只有實時層和服務層。Kappa架構通常是將流式框架中的數據通道替換成消息隊列(如Kafka),可以設定一定的保留期限,如分析邏輯改變,重新從消息隊列消費數據處理即可。
實時OLAP系統的兩種架構模型對比如圖1所示。
▲圖1 實時OLAP的兩種架構模型對比
兩種架構模型的優缺點對比如下:
- Lambda架構具有很好的靈活性、可擴展性和容錯性,但分別處理歷史數據與實時數據時常常出現處理邏輯或計算結果不一致的情況,另外系統建設和維護復雜。
- Kappa架構只需維護一套代碼,可以做到數據處理邏輯與計算結果的一致性。Kappa架構并不是Lambda架構的替代品,二者的應用場景不同。Kappa架構由于全部采用流式處理,數據處理吞吐量不如Lambda架構,處理資源成本也較高。
三、OLAP相關技術分類
按照數據模型可將OLAP相關技術分為MOLAP、ROLAP和HOLAP 3種類型:
- MOLAP表示Multidimensional OLAP(多維型OLAP),一般是基于預計算生成多維數據立方體;
- ROLAP是指Relational OLAP(關系型OLAP),一般不進行預計算,直接關聯事實表與維度表進行查詢;
- HOLAP是指Hybrid OLAP(混合型OLAP),是混合利用MOLAP和ROLAP方法,綜合二者的優缺點。
按照實現的技術方法可將OLAP相關技術分為MPP架構、預計算和搜索引擎三類。
- MPP架構:最常見的OLAP引擎架構,MPP架構具有完全的可伸縮性、高可用、高性能、高性價比等優勢。此類又分兩種,一種是MPP數據庫,它基于關系數據模型建立數據倉庫的主要技術選型,是大數據場景ROLAP的實現方法,典型的產品是Greenplum、ClickHouse;另一種是MPP分析引擎,它僅基于MPP架構實現計算功能,數據存儲則依賴于其他存儲系統(如HDFS),典型的產品有Presto、Impala。
- 預計算:基于定義的數據立方體,在明細表上進行預計算,在多維分析時僅執行查詢操作,是實現MOLAP的典型方法。優點是查詢時如果命中預計算結果則幾乎沒有延遲,適合對超大原始數據集的分析,可實現秒級響應;缺點是預計算量大、不靈活、支持維度有限(否則存在維度災難)、查詢延遲時間不穩定(取決于是否命中預計算結果)。典型的產品如Apache Kylin,也有產品通過控制預計算的程度以避免預計算量太大,如Druid。
- 搜索引擎:在入庫時將數據轉換為倒排索引,在搜索類查詢上能做到亞秒級響應,但是對于掃描聚合為主的查詢,隨著處理數據量的增加,響應時間也會退化到分鐘級。另外,搜索引擎對存儲消耗很大。典型的產品如Elasticsearch、Solr。
三種技術方法的優缺點及適用場景對比如表1所示。
▼表1 三種技術方法的優缺點及適用場景對比
針對這三種技術實現方法,該如何做技術選型呢?OLAP技術需要考慮系統的數據量、性能和靈活性三個方面,但是目前還沒有一種方法能同時在這三個方面做到完美,在設計時需要在這三個方面之間做出取舍。比如MPP架構,它有很好的數據量和靈活性的支持,但是它的性能無法保證,隨著計算量和復雜度的增加,響應時間可能從秒級變為分鐘級甚至小時級。而預計算系統和搜索引擎技術方法則是通過犧牲靈活性來換取高性能。另外,還要考慮是否需要查詢明細數據等輔助需求。
四、OLAP技術典型流行產品示例
本節介紹兩個Hadoop體系兼容的OLAP產品,一個是基于MPP架構的OLAP引擎—Impala,一個是基于預計算方法的OLAP引擎—Kylin。
1.Impala
Impala屬于SQL on Hadoop的開源MPP分析引擎,可在Hadoop集群上運行。它由Cloudera公司主導開發,作為Hive的高性能替代品,用于大數據實時查詢分析。Impala提高了Apache Hadoop的SQL查詢性能,同時保留了熟悉的Hive用戶體驗,采用SQL語法(Hive SQL),使得Hive的用戶可以順暢地遷移到Impala上。Impala采用與基礎數據存儲引擎分離的設計,使用HDFS和HBase作為數據存儲,并從Hive獲取元數據,這是它與傳統關系型數據庫系統的主要區別。傳統關系數據的查詢引擎與存儲引擎是緊密耦合的。
為了避免延遲,Impala避開了MapReduce,通過專門實現的分布式查詢引擎直接訪問數據,比Hive快幾個數量級。
Impala的優點如下所示。
- 在數據所在節點對數據進行本地處理,避免網絡傳輸瓶頸;
- 支持線性擴展;
- 與Hadoop體系使用相同的基礎設施,直接利用Hadoop體系的元數據、安全和資源管理;
- 直接讀取Hadoop系統中的數據,無須進行高成本的數據格式轉換;
- 所有數據均可立即查詢。
Impala由三個服務組成:Impala主進程(Impala daemon)、StateStore進程和Catalog進程。
- Impala主進程:負責接收客戶端的查詢請求,協調請求在集群中的執行,并負責執行一個查詢片段。Impala主進程包含三個子模塊:Query Planner、Query Coordinator、Query Exec Engine。每臺服務器上會運行一個Impala主進程(與HDFS的DataNode在同一個主機上運行),所有的Impala主進程都是對等的。Impala主程序與StateStore進程保持持續通信,以確認哪些節點的主進程是健康的并可以接收新工作。
- StateStore進程:充當Impala的Catalog儲存庫和元數據訪問網關,會檢查集群中所有Impala主進程的運行狀況,并將發現結果不斷傳遞給每個主進程。
- Catalog進程:將Impala SQL語句的元數據更改傳遞到集群的所有Impala主進程中。
Impala架構示意圖如圖2所示。
▲圖2 Impala架構
2.Kylin
Apache Kylin是一個開源的分布式分析引擎,提供Hadoop、Spark之上的SQL查詢接口及多維分析能力以支持超大規模數據,最初由eBay開發并貢獻至開源社區。
Kylin通過三步支持查詢。
- 模型定義:定義數據集的星形或雪花形模型。
- 預計算:通過數據立方體計算引擎(Cube Build Engine)組件對明細數據進行離線計算,生成用于查詢的數據立方體(OLAP Cube),并將Cube數據存儲于HBase中。
- 在線查詢:在線查詢時通過標準SQL或RESTful API,查詢引擎(Query Engine)首先對預計算的數據立方體進行查詢,如果命中緩存,則可以實現秒級響應,如果沒有命中緩存,則進行實時計算,延遲會比較高。
Kylin原理示意圖如圖3所示。
圖3 Kylin原理
Apache Kylin的特性如下所示。
- 能夠處理百億規模數據,可擴展,預計算生成數據立方體,在線查詢亞秒級響應。
- 兼容Hadoop體系。
- 提供標準SQL,支持大部分查詢功能。
- 能與BI工具的無縫整合,如Tableau。
本文摘編于《數據應用工程:方法論與實踐》,經出版方授權發布。(書號:9787111704096)轉載請保留文章出處。