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