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