眭冠男
摘要:在大數(shù)據(jù)時代,涌現(xiàn)了大量基于Hadoop的多維分析技術,分析性能不斷提升,該文選取了幾項有代表性的技術進行了介紹,并分析了它們的特點。最后,對基于大數(shù)據(jù)的多維分析技術進行了總結和展望。
關鍵詞:多維分析;OLAP;大數(shù)據(jù)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)04-0004-02
1 概述
隨著多維分析技術的發(fā)展,分析系統(tǒng)的數(shù)據(jù)量呈指數(shù)級增長,傳統(tǒng)的多維分析技術無論在存儲方面還是在大規(guī)模數(shù)據(jù)技術方面都遭遇到性能瓶頸,同時對數(shù)據(jù)分析的精確性和速度等要求逐漸提高,已經無法滿足企業(yè)的要求。近年來,大數(shù)據(jù)技術得到了快速的發(fā)展,分布式文件系統(tǒng)HDFS和MapReduce編程模型成為了應對海量數(shù)據(jù)的有效技術,Hadoop生態(tài)圈的迅速成熟,Hive、HBase、HadoopDB 等 NoSQL等技術相繼出現(xiàn),上述技術都提供了海量數(shù)據(jù)多維分析功能,在各領域得以廣泛應用。本文在綜述多維分析技術發(fā)展的基礎上,重點對幾個有代表性的多維分析技術進行了介紹??梢灶A見,未來在大數(shù)據(jù)多維分析系統(tǒng)中,這些技術會在市場中占有重要位置。
2 傳統(tǒng)多維數(shù)據(jù)分析技術介紹
多維數(shù)據(jù)分析技術是對數(shù)據(jù)的收集、管理和分析的過程,通過它使企業(yè)的數(shù)據(jù)分析人員獲得知識,為公司做出決策提供重要的支持。多維分析系統(tǒng)的后臺通常是由數(shù)據(jù)庫或數(shù)據(jù)倉庫存儲數(shù)據(jù),經過OLAP服務器實現(xiàn)數(shù)據(jù)分析,而前臺通過圖表、表格等展示工具來為用戶展示,它是多種計算機技術和信息處理技術的組合,技術主要包括:數(shù)據(jù)庫和數(shù)據(jù)倉庫技術(Data Warehousing)、數(shù)據(jù)抽取轉換加載技術(ETL-Extraction Transformation Loading)、聯(lián)機分析處理技術(OLAP-Online Analytical Process)、數(shù)據(jù)挖掘技術(Data Mining)、前端展現(xiàn)技術等。
聯(lián)機分析處理(On-Line Analytical Processing OLAP)是一種共享多維信息的快速分析技術[1],也是進行多維分析的重要技術。OLAP定義了事實表和維表,通過事實表和維表構建多維數(shù)據(jù)模型,然后經過OLAP服務器將數(shù)據(jù)存儲在OLAP服務器或者數(shù)據(jù)倉儲中,數(shù)據(jù)分析人員可以通過前端展示工具,從多個維度的組合、粒度的劃分等等將數(shù)據(jù)以圖表的方式展示出來,供決策人員和高層管理人員進行分析。OLAP可以完成的查詢操作有多表關聯(lián),可以使用聚合函數(shù)如count,sum,avg等,它的多維分析操作還有切片、切塊、鉆取、旋轉等,提高了分析的靈活性,滿足了不同分析的需求。
OLAP的數(shù)據(jù)存儲格式主要有3種形式[2],分別是ROLAP,MOLAP和HOLAP。
3 大數(shù)據(jù)環(huán)境下的多維分析技術
傳統(tǒng)的多維分析系統(tǒng)也存在著許多不足,業(yè)務要求經常改變,這樣就導致將業(yè)務模型也進行調整,而業(yè)務的維度和度量一旦發(fā)生變化,OLAP中的多維數(shù)據(jù)模型也需要重新構建;業(yè)務人員在同一個模型上進行多維分析,同時也限制了業(yè)務人員分析問題的角度,從分析數(shù)據(jù)中隱含的信息變成了普通的日常報表;數(shù)據(jù)的大量增加使傳統(tǒng)的多維分析系統(tǒng)快速準確的工作。
使用Hadoop[4]進行多維分析,首先能解決上述問題,HDFS有著優(yōu)秀的高容錯和高吞吐量的特點,可以存儲的文件支持高速增長的數(shù)據(jù),解決了數(shù)據(jù)存儲問題;其次MapReduce[5]有很強的分布式并行化處理能力,在上千臺機器組成的集群上運行處理大規(guī)模數(shù)據(jù),它并不會由于數(shù)據(jù)的增加使開銷大大增加,可以很好的完成OLAP的計算工作??傊琀adoop可以支持各種結構和非結構的數(shù)據(jù)存儲和計算,包含了各種各樣的維度組合,即使維度的數(shù)量大大增加,也不會顯著影響分析的性能。
Hadoop在可伸縮性、健壯性、計算性能和成本上具有無可替代的優(yōu)勢,事實上已成為當前互聯(lián)網(wǎng)企業(yè)主流的大數(shù)據(jù)分析平臺,以此為基礎,出現(xiàn)了大量基于大數(shù)據(jù)的多維分析方法[6]。
3.1 Hive
在大數(shù)據(jù)時代,Hadoop作為一個開源框架,已經成為了一種標準規(guī)范,越來越多的工具都在圍繞著Hadoop來工作。Hive[7] 是建立在 Hadoop 上的數(shù)據(jù)倉庫基礎構架。它提供了一系列的工具,可以用來進行數(shù)據(jù)提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規(guī)模數(shù)據(jù)的工具。
Hive由元存儲,驅動,查詢編輯器,執(zhí)行引擎以及對外提供接口的客戶端組件組成,HQL查詢語句從客戶端提交后,經過查詢編譯器,運用 元存儲中的元數(shù)據(jù)進行類型檢測和語法分析,生成一個邏輯方案,然后通過的優(yōu)化處理,產生一個 MapReduce 任務。
Hive中提供的SQL語句也稱為HiveQL,其中HiveQL提供了數(shù)學和統(tǒng)計函數(shù)、字符串函數(shù)、日期函數(shù)、條件函數(shù)、聚集函數(shù)以及處理XML和JSON的函數(shù),用戶也可以自定義函數(shù)完成自己的需求。Hive在運行的過程中有良好的容錯性,如果一個節(jié)點出錯,SQL查詢仍然可以完成。但是HiveQL相比SQL同樣有著許多不足,Hive中的數(shù)據(jù)無法進行更新和刪除,所以Hive對事務支持比較弱,無法進行聯(lián)機事務處理,只能進行聯(lián)機分析處理;同時由于Hive中的查詢時間花費開銷大,所以不能用在實時交互系統(tǒng)中。
3.2 Impala
雖然Hive為大數(shù)據(jù)多維分析提供了支持,但是由于Hive的底層是MapReduce任務,計算過程中I/O操作過多,運行效率比較低,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產生。Apache Impala[9]是由Cloudera開發(fā)并開源的一款基于HDFS/Hbase的MPP SQL引擎,它擁有和Hadoop一樣的可擴展性、也提供了類SQL語法,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。在多用戶場景下也能擁有較高的響應速度和吞吐量。
MPP是海量數(shù)據(jù)實時分析架構,傳統(tǒng)的基于MPP的數(shù)據(jù)庫中每一個節(jié)點都會安裝獨立的操作系統(tǒng)和數(shù)據(jù)庫,當進行查詢的時候,將計算分到各個節(jié)點中進行,然后將結果返回并合并。在Impala中,各個節(jié)點不在執(zhí)行MapReduce任務,這樣大大減少了時間消耗。
Impala自身包含三個模塊:Impalad、Statestore和Catalog。Statestore和Catalog主要進行元數(shù)據(jù)的管理和監(jiān)控,Impalad模塊完成查詢任務。在進行數(shù)據(jù)查詢時,用戶程序通過Impala 客戶端發(fā)送Sql語句給Impala;當Impala中任意一個節(jié)點收到請求后,此節(jié)點編作為此次查詢過程的協(xié)調器,然后對用戶的請求進行解析,根據(jù)元數(shù)據(jù)了解各個節(jié)點的狀態(tài),將任務分發(fā),優(yōu)化執(zhí)行計劃,每個節(jié)點對數(shù)據(jù)進行訪問,可以直接從HDFS讀取,也可以從HBase獲取,最后將結果匯總后返回到客戶端。
Impala和Hive對比,性能更加優(yōu)秀,查詢的效率提高了3到90倍,Impala不再使用MapReduce運算來得到數(shù)據(jù),而是通過生成執(zhí)行計劃樹,將計劃分到各個節(jié)點執(zhí)行返回數(shù)據(jù),中間的結果不會寫到磁盤,這樣就減少了大量開銷;Impala同時還具有靈活性,本地數(shù)據(jù)本地化處理,降低網(wǎng)絡的瓶頸。但是它的缺點同樣有不少,首先容錯性低,如果一個節(jié)點失敗即代表整個查詢失敗,內存溢出導致任務失敗,不支持SerDe和用戶自定義函數(shù)UDF、UDAF等。
3.3 Sparksql
Spark SQL 是一個用來處理結構化數(shù)據(jù)的spark[10]組件。它提供了一個叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個分布式的SQL查詢引擎。sparksql執(zhí)行sql任務的運算引擎是spark core,從而充分利用spark內存計算及DAG模型的優(yōu)勢,大幅提升海量數(shù)據(jù)的分析查詢速度[11]。
core、catalyst、hive、hive-Thriftserver是SparkSQL的四個模塊,core處理數(shù)據(jù)的輸入輸出,從不同的數(shù)據(jù)源獲取數(shù)據(jù)(RDD、Parquet、json等),將查詢結果輸出成schemaRDD;catalyst處理查詢語句的整個處理過程,包括解析、綁定、優(yōu)化、生成邏輯執(zhí)行計劃和物理查詢計劃,最后轉換為有向無環(huán)圖執(zhí)行查詢, catalyst處于最核心的部分,其性能優(yōu)劣將影響整體的性能;hive對hive數(shù)據(jù)的處理,hive-ThriftServer提供CLI和JDBC/ODBC接口。
除了catalyst在查詢上進行了優(yōu)化外,SparkSQL在存儲上也進行了優(yōu)化,內存列存儲,首先數(shù)據(jù)的存儲方式是列存儲,數(shù)據(jù)加載到了內存中進行緩存,在查詢的時候可以直接從內存中讀??;為了更高效地利用內存,還可以對數(shù)據(jù)采用編碼壓縮方法降低硬盤開銷、內存開銷和網(wǎng)絡傳輸開銷,如PassThrough、RunLengthEncoding等。
3.4 Apache Kylin
Hive、Impala、SparkSQL的主要技術是“大規(guī)模并行處理”(Massive Parallel Processing,MPP)和“列式存儲”(Columnar Storage)。這些技術使得Hadoop上的SQL查詢時間從小時提高到了分鐘。但是分鐘級別的查詢響應并不能滿足實時交互的需求。而且有些具體的場景分析可能需要幾小時甚至幾天才能完成,效率低下。
Apache Kylin[12]是一個由中國人開發(fā)的分布式多維分析引擎,提供了Hadoop之上的SQL查詢接口及多維分析能力以支持超大規(guī)模數(shù)據(jù)。Kylin的核心思想是預計算,即對多維分析可能會用到的度量進行預計算,將計算好的結果保存為cube存儲在HBase中,供查詢的時候訪問。從而把高復雜度的聚合運算、多表連接等操作轉換為對預計算后的cube查詢,這使Kylin具有很好的快速查詢和高并發(fā)能力,Kylin的工作原理本質是MOLAP,也就是多維立方體分析。
Kylin的OLAP引擎框架的核心模塊包括元數(shù)據(jù)引擎(Metadata Manager)、查詢引擎(Query Engine)、REST Server、Routing以及Cube構建引擎。Hive中數(shù)據(jù)是原始數(shù)據(jù),Kylin按照建立的cube模型由Cube構建引擎對數(shù)據(jù)進行計算,然后將其存到HBase數(shù)據(jù)庫中。
4 結束語
隨著數(shù)據(jù)的增長,傳統(tǒng)的關系型數(shù)據(jù)庫由于自身的架構問題,已經無法很好地處理單表10億行數(shù)據(jù),而大數(shù)據(jù)技術的發(fā)展,有HDFS解決了海量數(shù)據(jù)的存儲和MapReduce解決了對數(shù)據(jù)的處理,到如今眾多SQLonHadoop技術的出現(xiàn),這是大數(shù)據(jù)思路為我們帶來了處理海量數(shù)據(jù)的新思維。
Hive、Phoenix、Impala、Drill、SparkSQL等技術從底層來看有著很多共性:大規(guī)模并行處理技術,列式存儲,索引和壓縮技術,這些技術提高了對數(shù)據(jù)的處理能力,但是對數(shù)據(jù)量不是無限制的,如果數(shù)據(jù)量過大,查詢花費的時間仍然可能到小時級別。以上技術屬于ROLAP類型。Apache Kylin除了使用了以上技術外,還引入了Cube模式,通過預計算以空間換時間的方式,將查詢時間提高到了毫秒級別,并且不會受到數(shù)據(jù)量的限制。這類技術屬于MOLAP類型。
現(xiàn)在已經有越來越多的企業(yè)選擇大數(shù)據(jù)多維分析取代傳統(tǒng)的多維分析,將來大數(shù)據(jù)分析技術也會更加準確、穩(wěn)定、快速地完成數(shù)據(jù)分析。與此相應的,用戶也將會更簡潔快速地從自己的大數(shù)據(jù)中挖掘出有價值的商業(yè)信息。
參考文獻:
[1] 趙博,葉曉俊. OLAP性能測試方法研究與實現(xiàn)[J]. 計算機研究與發(fā)展,2011(10):1951-1959.
[2] 王付山. OLAP技術研究與發(fā)展述評[J]. 軟件導刊,2007,(19):11-13.
[3] Big Data.Nature,2008,http://www.nature.com/news/specials/bigdata/index.html. (下轉第7頁)
(上接第5頁)
[4] Manoj Kumar Singh, Dr. Parveen Kumar. Hadoop: A Big Data Management Framework for Storage, Scalability, Complexity, Distributed Files and Processing of Massive Datasets. International Journal of Engineering Research and General Science,2014,2(4):89-95
[5] 謝桂蘭,羅省賢. 基于Hadoop MapReduce模型的應用研究[J].微型機與應用,2010(8):4-7.
[6] 杜小勇,陳躍國,覃雄派.大數(shù)據(jù)與OLAP系統(tǒng)[J].大數(shù)據(jù),2015(1):55-67.
[7] Thusoo A, Sarma J S, Jain N, et al. Hive -a petabyte scale data warehouse using hadoop[J]. Inproc Icde, 2010, 41(3):996-1005.
[8] 任春華,廖雪花,唐思娩,等. 基于Hive和Impala的物流運力供應鏈數(shù)據(jù)倉庫研究[J].物流技術,2016,35(01):124-126.
[9] 徐東輝. Impala整體架構及操作[J].電信網(wǎng)技術,2015(8):15-21.
[10] 黎文陽. 大數(shù)據(jù)處理模型Apache Spark研究[J].現(xiàn)代計算機:專業(yè)版,2015(8):55-60.
[11] 郭景瞻. 圖解Spark:核心技術與案例實戰(zhàn)[M].電子工業(yè)出版社,2017.
[12] 蔣守壯. 基于Apache Kylin構建大數(shù)據(jù)分析平臺[M].清華大學出版社,2016.