◆李蘭鳳 馬佳榮
大數(shù)據(jù)計算框架與平臺分析
◆李蘭鳳 馬佳榮
(西安文理學(xué)院 陜西 710065)
隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等技術(shù)得到越來越廣泛的應(yīng)用,數(shù)據(jù)規(guī)模不斷增加,對數(shù)據(jù)的處理已無法由單臺機器完成,只能由多臺機器共同承擔(dān)計算任務(wù)。本文對近幾年來的大數(shù)據(jù)處理與分析的相關(guān)資料進行整理研究,討論了批處理計算、流計算、交互分析和圖計算四種大數(shù)據(jù)計算模式,分析了不同的大數(shù)據(jù)計算模式下常用的計算框架與平臺。
大數(shù)據(jù);批處理;流計算;交互分析;圖計算
隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)等技術(shù)的出現(xiàn),數(shù)據(jù)規(guī)模越來越大,數(shù)據(jù)類型多種多樣,數(shù)據(jù)來源復(fù)雜多變,隨之大數(shù)據(jù)概念被提出。近年來,企業(yè)、學(xué)術(shù)界和政府都對大數(shù)據(jù)的巨大潛力產(chǎn)生了興趣,大數(shù)據(jù)也逐漸被熟知。本文對大數(shù)據(jù)進行簡析,重點分析了幾種常用的大數(shù)據(jù)計算框架與平臺。
最早應(yīng)用大數(shù)據(jù)的是美國的麥肯錫公司,該公司最先提出了大數(shù)據(jù)時代的到來。對于大數(shù)據(jù)至今沒有公認(rèn)的定義,麥肯錫公司在《大數(shù)據(jù):創(chuàng)新、競爭和生產(chǎn)力的下一個前沿領(lǐng)域》報告中給出的大數(shù)據(jù)的定義是大小超出常規(guī)的數(shù)據(jù)庫工具進行獲取、存儲、管理和分析能力的數(shù)據(jù)集。一般來說大數(shù)據(jù)可以用5V[1]模型來描述,它是從3V模型擴展而來的,5V模型指的是大數(shù)據(jù)的5個特征,即Volume,Velocity,Variety,Value,Veracity。
Volume指數(shù)據(jù)量大,隨著海量數(shù)據(jù)的產(chǎn)生和收集,數(shù)據(jù)規(guī)模變得越來越大。目前企業(yè)的數(shù)據(jù)量已經(jīng)躍升到PB級別。
Velocity指大數(shù)據(jù)的時效性,即必須快速、及時地進行數(shù)據(jù)的收集和分析,以最大限度地利用大數(shù)據(jù)的商業(yè)價值。
Variety指數(shù)據(jù)具有多樣性,數(shù)據(jù)來源豐富,數(shù)據(jù)類型和格式多樣,不僅包括傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),還包括如音頻、視頻、網(wǎng)頁和文本等半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
Value指數(shù)據(jù)的價值,雖然數(shù)據(jù)從不同的渠道產(chǎn)生,但有一點很重要,即今天的數(shù)據(jù)蘊含價值。數(shù)據(jù)本身是一種“商品”,可以賣給第三方獲得收入。此外,通過分析數(shù)據(jù)有助于預(yù)算決策,從而獲取價值。
Veracity指數(shù)據(jù)的準(zhǔn)確性,盡管數(shù)據(jù)是蘊含價值的,但只有真實準(zhǔn)確的數(shù)據(jù)才能提供決策支持,體現(xiàn)數(shù)據(jù)的價值。高質(zhì)量的數(shù)據(jù)能夠影響決策的準(zhǔn)確性和有效性。
大數(shù)據(jù)計算框架負(fù)責(zé)對大數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)進行計算,目前的大數(shù)據(jù)計算框架有很多,本文主要介紹批處理計算、流計算、交互式計算和圖計算四種模式下的計算框架。
批處理計算模式對存儲的大規(guī)模靜態(tài)數(shù)據(jù)進行計算,等到全部處理完成后返回有價值的結(jié)果。目前用于批處理計算的框架和平臺主要有以下幾種:
(1)MapReduce計算框架
MapReduce[2]是一種分布式并行計算框架,廣泛用于大規(guī)模批處理計算中。MapReduce將并行計算過程抽象為map和reduce兩個函數(shù),存儲在系統(tǒng)中的數(shù)據(jù)集被拆分成許多子集在多臺機器上執(zhí)行。其中,一臺機器作為master負(fù)責(zé)作業(yè)和任務(wù)的調(diào)動,其他機器作為worker承擔(dān)master指派的任務(wù)。master將拆分的數(shù)據(jù)片分配給空閑的worker,執(zhí)行map任務(wù)的worker處理相應(yīng)的分片,生成
MapReduce以其良好的性能得到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注和應(yīng)用。簡單性、可伸縮性和容錯性是MapReduce框架的三個主要顯著特性。它允許一個沒有經(jīng)驗的程序員開發(fā)并行程序,并創(chuàng)建一個能夠在云中使用計算機的程序??梢酝ㄟ^增加機器來擴展其計算能力,處理大規(guī)模離線數(shù)據(jù)。當(dāng)某個設(shè)備故障,可以轉(zhuǎn)移任務(wù)至其他設(shè)備而保障任務(wù)執(zhí)行不受影響。盡管MapReduce有著巨大的優(yōu)勢,但它也存在局限性。首先,MapReduce訪問數(shù)據(jù)時延遲高,執(zhí)行時間耗時長,不適合交互式處理和基于事件的實時在線流計算。其次,在迭代計算時,每次迭代都需要啟動MapReduce作業(yè),開銷較大,計算時間顯著增加,因此也不適用于迭代計算(圖計算、機器學(xué)習(xí)等)。
(2)Hadoop數(shù)據(jù)處理平臺
Hadoop是基于java的開源分布式計算平臺,靈感來自谷歌的BigTable、文件系統(tǒng)(GFS)和MapReduce。它的核心部分包括一個MapReduce組件和一個可伸縮性存儲組件Hadoop分布式文件系統(tǒng)(HDFS)。
HDFS[2]用于存儲計算過程中的中間態(tài)結(jié)果和最終結(jié)果,支持海量數(shù)據(jù)和冗余數(shù)據(jù)的存儲,具有較快的讀寫速度、較高的數(shù)據(jù)安全性、很好的容錯性和可伸縮性。MapReduce是針對Google MapReduce的開源實現(xiàn),用于大規(guī)模數(shù)據(jù)的并行計算。Hadoop中的MapReduce計算模型允許直接用Java、python、R、SQL等編程語言編寫數(shù)據(jù)分析任務(wù)的程序。此外,Hadoop還具有較高的擴展性,hadoop的許多核心組件,如調(diào)度程序、存儲子系統(tǒng)、壓縮算法、緩存層和監(jiān)控等均可進行定制和替換。
Hadoop以其高效性、可擴展性、可靠性、容錯性、低成本以及支持多種編程語言而受到歡迎,成為公認(rèn)的行業(yè)大數(shù)據(jù)標(biāo)準(zhǔn)開源軟件,目前被廣泛用于Web索引、推薦系統(tǒng)和日志分析以及某些大規(guī)模的信息提取和機器學(xué)習(xí)任務(wù)等方面。亞馬遜、Facebook、淘寶和Twitter等領(lǐng)先的技術(shù)公司都在使用Hadoop。Hadoo雖然在各方面性能良好,但是其需要大量的Java專業(yè)知識來開發(fā)并行程序,缺乏強大的統(tǒng)計和可視化工具,數(shù)據(jù)訪問延遲高,而且不支持多用戶寫入和修改文件。
(3)Dryad計算框架
Dryad[3]是微軟的分布式并行計算平臺。包括Dryad和DryadLINQ兩個重要項目。Dryad是微軟云計算基礎(chǔ)設(shè)施的重要核心技術(shù)之一,它不僅是并行計算編程模型也是任務(wù)調(diào)度模型。Dryad的任務(wù)執(zhí)行用有向無環(huán)圖(DAG)來表述,圖中的頂點表示程序,邊表示通道,而任務(wù)就是圖形生成器,可以合成任何有向無環(huán)圖,這些圖可以在執(zhí)行過程中根據(jù)計算中發(fā)生的事件而改變。
DryadLINQ是分布式編程語言,它結(jié)合了Dryad和LINQ技術(shù),將使用LINQ編寫的程序轉(zhuǎn)化為Dryad上的可運行程序,在延續(xù)了LINQ特性的同時,為更好適應(yīng)分布式計算的需求,擴展了操作符以及數(shù)據(jù)類型。DryadLINQ允許程序員使用計算機集群或數(shù)據(jù)中心的資源來運行數(shù)據(jù)并行程序,而不需要程序員掌握高深的編程知識。Dryad具有良好的容錯性和擴展性,底層的數(shù)據(jù)存儲支持?jǐn)?shù)據(jù)備份,但是僅適用于批處理計算,滿足不了對實時任務(wù)的需求,其數(shù)據(jù)模型只適用于流式數(shù)據(jù)訪問而不支持隨機訪問。
流計算實時獲取來自不同數(shù)據(jù)源的海量數(shù)據(jù),經(jīng)過實時分析,得出有價值的結(jié)果,目前用于流計算的框架和平臺主要有Storm、S4和Spark等。
(1)Storm框架
Storm[4]是一個開源的分布式實時計算系統(tǒng),它使得可靠地處理無界數(shù)據(jù)流變得很容易。就像Hadoop在批處理中的意義一樣,Storm在實時處理中也有相同的意義。Storm運行在分布式集群上,與Hadoop相似也采用主從式架構(gòu),主控節(jié)點master上運行Nimbus程序,負(fù)責(zé)集群范圍的資源分配、狀態(tài)監(jiān)控、故障檢測并為worker進行任務(wù)分配,從節(jié)點worker有多個,其上運行supervisor程序,負(fù)責(zé)監(jiān)聽和接收Nimbus分配的任務(wù),并根據(jù)其分配的任務(wù)選擇啟動或停止worker工作進程。Nimbus和Supervisor之間的協(xié)調(diào)工作是通過分布式協(xié)調(diào)組件zookeeper完成的,保證了Storm的可靠性。
Storm支持多種編程語言,配置和操作簡單,處理速度快,具有較高的擴展性和容錯性,常用于實時分析、連續(xù)計算、在線機器學(xué)習(xí)等領(lǐng)域。
(2)Apache S4框架
Apache S4[5]是Yahoo發(fā)布的一個通用的分布式流計算平臺,它允許程序員輕松地用于開發(fā)處理連續(xù)無界數(shù)據(jù)流的應(yīng)用程序。在S4中任務(wù)被分解為更多小的流事件,其計算由多個計算單元(PE)相互配合完成,S4采用的是對等架構(gòu),沒有中心節(jié)點,所有節(jié)點都是等同的,節(jié)點主要任務(wù)是監(jiān)聽并分發(fā)接收到的事件,在接收到事件后調(diào)用合適的PE進行處理,PE之間通過消息形式傳輸。每個PE的狀態(tài)是其他PE無法訪問的;事件排放與消費是PE之間唯一的交互模式。S4中節(jié)點的對等特性使系統(tǒng)在某個節(jié)點失效的情況下仍能進行時間的處理,極大地提高了系統(tǒng)的性能,但是會造成數(shù)據(jù)的丟失,同時S4也不支持動態(tài)部署,缺乏自動均衡負(fù)載的能力。
(3)Spark框架
Apache Spark[6]是加州大學(xué)伯克利分校的AMPLab開發(fā)的基于內(nèi)存計算的輕量型計算框架,目前主要運行垃圾郵件過濾和流量預(yù)測等大規(guī)模應(yīng)用程序。Spark支持批處理、交互式分析、流計算和迭代計算等多種計算模式。Spark將數(shù)據(jù)存儲在抽象的彈性分布式數(shù)據(jù)集(RDD)中,Spark 將RDD數(shù)據(jù)集的操作結(jié)果存到內(nèi)存中,方便下次操作可以直接從內(nèi)存中讀取數(shù)據(jù),減少了大量磁盤I/O操作,提升了集群的數(shù)據(jù)處理速度。Spark 還提供了內(nèi)存中的集群計算和Scala、Java、Python等API,支持多種編程語言,對編程人員來說簡單易用。但Spark分析目前仍大多依賴于Hadoop的HDFS。
交互式分析是指對數(shù)據(jù)進行處理,允許用戶進行自己的信息分析,目前的交互式計算工具有Apache Drill、Apache Kylin、Impala、presto、Spago BI等,其中最具代表性的是Apache Drill。
Apache Drill是谷歌Dremel系統(tǒng)的開源實現(xiàn),是一個可伸縮的交互式查詢系統(tǒng),用于對大規(guī)模數(shù)據(jù)集進行交互分析。Drill的核心是DrillBit服務(wù),它主要負(fù)責(zé)接收來自客戶端的請求,處理查詢?nèi)蝿?wù)并將結(jié)果返回。Drill數(shù)據(jù)靈活、SQL查詢延遲低、支持多數(shù)據(jù)源。Drill的設(shè)計方向是支持更多的查詢語言、數(shù)據(jù)源和數(shù)據(jù)格式,能夠擴展更多的服務(wù)器,能夠在幾秒鐘內(nèi)處理PB級的數(shù)據(jù)和數(shù)萬億的記錄。
圖計算主要對大規(guī)模圖結(jié)構(gòu)數(shù)據(jù)進行計算,能夠非常好的表示數(shù)據(jù)之間的關(guān)聯(lián)性。圖計算平臺有很多,如Pregel、Giraph、Hama、GiraphX、powerGiraph等,目前最常用的是GiraphX。
GiraphX[7]是一個分布式圖計算框架,它是基于分布式平臺Spark的,提供給你了豐富的接口,提高了分布式圖處理的需求,同時GiraphX還對Spark RDD進行了擴展,它有Table和Graph兩種視圖,這兩種視圖共用一份物理存儲,而且都有自己特有的操作符,這使得操作更加靈活、執(zhí)行更加高效,也降低了平臺中計算和存儲的開銷。
大數(shù)據(jù)分布式計算是大數(shù)據(jù)技術(shù)的核心,目前已經(jīng)得到了迅猛的發(fā)展。不同的計算模式滿足不同應(yīng)用的需求,這些計算模式彼此之間可以相互配合,并不是完全獨立的。特別是隨著用戶應(yīng)用需求越來越多樣化,要求越來越高以及新技術(shù)的不斷出現(xiàn),其所需要的計算模式也需要不斷地變化,這迫使各種計算框架也在不斷地改進,并相互競爭。這些問題都對各計算框架的吞吐量、系統(tǒng)開銷、實時性以及響應(yīng)速度等性能提出了更高的要求,也成為大數(shù)據(jù)計算框架需要改進的方向。因此,大數(shù)據(jù)計算框架依然是大數(shù)據(jù)今后研究的重點。
[1]Lomotey R K ,Deters R . Towards Knowledge Discovery in Big Data[C].IEEE International Symposium on Service Oriented System Engineering. IEEE Computer Society, 2014:181-191.
[2]林子雨.大數(shù)據(jù)技術(shù)原理與應(yīng)用:概念、存儲、處理、分析與應(yīng)用[M].人民郵電出版社,2015.
[3]鄭緯民.從系統(tǒng)角度審視大數(shù)據(jù)計算[J].大數(shù)據(jù),2015, 1(1):10-19.
[4]趙娟,程國鐘.基于Hadoop、Storm、Samza、Spark及Flink大數(shù)據(jù)處理框架的比較研究[J].信息系統(tǒng)工程,2017(6):117-117.
[5]趙晟,姜進磊.典型大數(shù)據(jù)計算框架分析[J].中興通訊技術(shù),2016,22(2):14-18.
[6]楊寧,黃婷婷.基于Spark的大數(shù)據(jù)分析工具Hive的研究[J].計算機時代,2018,317(11):35-39.
[7]米沃奇.大數(shù)據(jù)分析系統(tǒng)Hadoop的13個開源工具[J]. 電腦知識與技術(shù)(經(jīng)驗技巧),2018(07):107-109.
[8]孫海. Spark的圖計算框架:GraphX[J].現(xiàn)代計算機, 2017(9):120-122.