陳 誠,石 莉,丁雪紅,劉非凡
(淮北師范大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,安徽淮北235000)
近年來,大數(shù)據(jù)迅速發(fā)展成為關(guān)注熱點,其5V特征在發(fā)展的潮流中顯現(xiàn)出來[1],據(jù)國際數(shù)據(jù)公司(IDC)的研究結(jié)果表明,2008 年全球產(chǎn)生的數(shù)據(jù)量為0.49 ZB,2009 年的數(shù)據(jù)量為0.8 ZB,2010 年的數(shù)據(jù)量為1.2 ZB,2011 年的數(shù)量高達(dá)1.82 ZB,到2020年,全世界所產(chǎn)生的數(shù)據(jù)規(guī)模將達(dá)到一個暫時的頂峰期[2]. 面對急速增長的數(shù)據(jù)規(guī)模,如果不借助大數(shù)據(jù)處理分析工具,用戶很難從形態(tài)多樣的海量數(shù)據(jù)中高效、快速、及時地挖掘出有用的信息.
數(shù)據(jù)處理框架負(fù)責(zé)對數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)進(jìn)行計算,目前國內(nèi)外出現(xiàn)的數(shù)據(jù)處理框架主要有批處理框架、流式處理框架、圖處理框架[3]、迭代處理框架[4]和內(nèi)存處理框架等[5],運用較多是批處理和流式處理框架. 最早出現(xiàn)的大數(shù)據(jù)處理方式是批處理,批處理是先進(jìn)行存儲再處理,是一種集中式的數(shù)據(jù)處理[6],隨著數(shù)據(jù)不斷的變化,流式處理框架成為一種趨勢,流式處理是直接處理的,它將源源不斷的數(shù)據(jù)組成了數(shù)據(jù)流,只要有新數(shù)據(jù)就及時處理,不需要做持久性的操作[7]. 兩者在數(shù)據(jù)處理上都有自己的優(yōu)點,但是也有一定的缺陷,為了更好滿足用戶對于多樣化數(shù)據(jù)的處理,各種各樣的處理框架涌現(xiàn)出來,其中多框架混合處理系統(tǒng)在處理數(shù)據(jù)上的優(yōu)勢最為明顯. 面對眾多的處理框架,弄清數(shù)據(jù)處理框架的種類以及如何選擇合適的框架有一定的研究意義.
1.1.1 相關(guān)概念及特征
批處理是對批量的靜態(tài)數(shù)據(jù)進(jìn)行處理,從處理的結(jié)果中獲得具體的含義,然后制定相關(guān)的決策來進(jìn)行解決業(yè)務(wù),得到有效應(yīng)對策略[8]. 簡單的批處理模型如圖1所示,數(shù)據(jù)首先在硬盤中進(jìn)行存儲,然后進(jìn)入內(nèi)存并在內(nèi)存中進(jìn)行集中處理[9].
1.1.2 批處理核心技術(shù)及實現(xiàn)
批處理數(shù)據(jù)量非常大、數(shù)據(jù)精確度高和數(shù)據(jù)價值密度低[10]. 批處理的核心技術(shù)是Hadoop,其起源于Google 發(fā) 表 的BigTable[11]、MapReduce[12]和Google File System[13],Hadoop作為批處理框架,數(shù)據(jù)處理功能由MapReduce 并行處理技術(shù)實現(xiàn). MapReduce 是典型的批處理技術(shù),對數(shù)據(jù)采用分而治之的思想,MapReduce的執(zhí)行流程如圖2所示,具體實現(xiàn)過程在文獻(xiàn)《海量數(shù)據(jù)上基于抽樣的模式挖掘研究》[14]中有詳細(xì)說明.批處理主要應(yīng)用于互聯(lián)網(wǎng)領(lǐng)域[15]、安全領(lǐng)域[16]和公共服務(wù)領(lǐng)域[17].
批處理典型的一個應(yīng)用案例就是全球最大連鎖超市Wal-Mart,它主要就是利用Hadoop 平臺來分析顧客搜尋商品的行為,利用這些關(guān)鍵詞的分析結(jié)果發(fā)掘顧客需求,以規(guī)畫下一季商品的促銷策略.
圖1 批處理模型
圖2 MapReduce執(zhí)行流程
1.2.1 相關(guān)概念及特征
流式處理對數(shù)據(jù)處理的實時性要求嚴(yán)格,不需要對數(shù)據(jù)的存儲工作,是在數(shù)據(jù)到來后直接對數(shù)據(jù)進(jìn)行處理并實時得到反饋結(jié)果.簡單的流式處理模型如圖3所示.
圖3 流式處理模型
1.2.2 常見的流式處理框架
流式大數(shù)據(jù)指的是隨著時間順序無限增加的數(shù)據(jù)序列,也可將其看成是歷史數(shù)據(jù)和不斷增加的更新數(shù)據(jù)的并集[18]. 流式大數(shù)據(jù)主要具有以下五個特點:數(shù)據(jù)實時到達(dá)性、數(shù)據(jù)的無限性、數(shù)據(jù)的無序性、數(shù)據(jù)的突發(fā)性和數(shù)據(jù)的易失性等[19]. 理想的流式處理框架應(yīng)該表現(xiàn)出低延遲、高吞吐、持續(xù)穩(wěn)定運行和彈性可伸縮等特點[20]. 目前國內(nèi)外使用最廣泛的流式處理框架主要有Storm、Spark、Samza等.
(1)Apache Storm. Storm 是一個分布式的流式處理框架,它采用的是事件流的形式,多個輸入和處理組件構(gòu)成一個處理網(wǎng)絡(luò),中間的處理結(jié)果都存儲在內(nèi)存中,保證數(shù)據(jù)處理的時效性,有效的解決實時分析的用戶需求[21].
在Storm 中,首先要設(shè)計一個拓?fù)洌╰opology),如圖4所示.
圖4 Storm拓?fù)鋱D
在拓?fù)渲?,包括Spout 和Bolt 兩種角色,實現(xiàn)流程在文獻(xiàn)《基于GPS 數(shù)據(jù)的實時路況特征分析系統(tǒng)設(shè)計與實現(xiàn)》[22]中有詳細(xì)說明.此拓?fù)鋵惶峤坏絊torm 集群中,集群采用主從式架構(gòu),一個主控節(jié)點Nimbus,多個工作節(jié)點Supervisor,主控節(jié)點與工作節(jié)點之間所有的協(xié)調(diào)工作由zookeeper[23]實現(xiàn),其架構(gòu)圖如圖5所示,架構(gòu)具體實現(xiàn)在文獻(xiàn)《大數(shù)據(jù)流式計算系統(tǒng)研究綜述》[24]中已有詳細(xì)介紹. Storm 擁有編程簡單、支持多種編程語言、容錯性、可擴(kuò)展性、可靠性、高效性等特性[25].
圖5 Storm架構(gòu)圖
(2)Apache Spark. Spark 不是一次一個的處理數(shù)據(jù),它在處理前按時間間隔預(yù)先將數(shù)據(jù)切分為一段一段的批處理作業(yè)[26].Spark持續(xù)性數(shù)據(jù)流的抽象稱為DStream(DiscretizedStream),一個DStream是一個微批處理的RDD(Resilient Distributed Datasets)[27]. Spark 的架構(gòu)圖如圖6 所示,框架組件及具體實現(xiàn)在文獻(xiàn)《Hadoop 與Spark 應(yīng)用場景研究》[28]中已有詳細(xì)介紹. Spark 的流式處理是由Spark Streaming[29]實現(xiàn)的.
圖6 Spark架構(gòu)圖
(3)Apache Samza. Samza[30]的流單位是消息,它處理每條收到的消息的時候是按照次數(shù)進(jìn)行的.數(shù)據(jù)流來的時候會被切分開,每個部分都由一組只讀消息的有序數(shù)列構(gòu)成,每條消息都有特定的ID[31].它的執(zhí)行與數(shù)據(jù)流模塊是可插拔式的,依賴資源調(diào)度器Yarn 和Apache Kafka[32],Kafka 是一種分布式的存儲器,同時作為一個高性能的消息隊列系統(tǒng).Samza的架構(gòu)圖如圖7所示,當(dāng)用戶提交一個任務(wù)的時候,Yarn 中的Resource Manager 申請資源,同時Yarn 在Node Manager 節(jié)點上啟動容器,供Samza 運行相應(yīng)的任務(wù).然后Samza進(jìn)程從Kafka的不同分區(qū)中實時拉取數(shù)據(jù),并進(jìn)行相應(yīng)的計算. 最后將處理后的結(jié)果再次存入Kafka進(jìn)入下一輪的計算[33].
不管是批處理還是流式處理,一旦超過自身的應(yīng)用領(lǐng)域就會出現(xiàn)一些問題. 隨著時代的發(fā)展,數(shù)據(jù)處理的要求越來越高,單一的處理框架已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足需求,多框架混合處理系統(tǒng)的出現(xiàn)能夠很好的解決這個問題.
圖7 Samza架構(gòu)圖
2.3.1 相關(guān)概念及特征
多框架混合處理系統(tǒng)核心思想是將單一框架經(jīng)過一系列的設(shè)計進(jìn)行組合,將它們的處理優(yōu)點提煉出來進(jìn)行組合. 但是組合過程需要解決很多的問題,如語言設(shè)計問題、兼容性問題等等.框架組合的方式有很多種,流式框架和批處理框架之間的結(jié)合是最典型的,能處理大數(shù)據(jù)中的絕大多數(shù)問題,應(yīng)用場景比較廣泛.
2.3.2 使用Lambda基礎(chǔ)架構(gòu)的多框架混合處理系統(tǒng)
流式處理框架和批處理框架結(jié)合主要使用的是Lambda 基礎(chǔ)架構(gòu),此架構(gòu)是由Twitter 工程師Nathan Marz 提出來的[34],將批處理和流式處理進(jìn)行有效的結(jié)合.此架構(gòu)劃分為三層:批處理層、加速層和服務(wù)層[35],每一層負(fù)責(zé)的任務(wù)是不一樣的,且相互之間都有聯(lián)系,批處理層由Hadoop 實現(xiàn),負(fù)責(zé)數(shù)據(jù)的存儲和產(chǎn)生隨意的視圖數(shù)據(jù).加速層的主要任務(wù)是負(fù)責(zé)處理最新的數(shù)據(jù),通過數(shù)據(jù)處理得到視圖,它由Storm實現(xiàn),彌補(bǔ)了批處理的延遲問題.服務(wù)層主要負(fù)責(zé)索引批處理視圖,建立索引和顯示視圖,便于用戶的查找. Lambda 架構(gòu)圖如圖8 所示. 目前引用Lambda 架構(gòu)的多框架混合處理系統(tǒng)有很多,比如SummingBird[36]和Lambdoop[37]等.
圖8 Lambda三層架構(gòu)圖
(1)SummingBird
SummingBird 是開源的處理框架,對于批處理和流式處理界限明顯,利用SummingBird 來進(jìn)行批處理和流式處理之間的調(diào)度,SummingBird 系統(tǒng)架構(gòu)圖如圖9 所示. SummingBird 通過使用Scala 或者Java 語言描述,描述的任務(wù)可以同時在Hadoop 或者Storm 上執(zhí)行. SummingBird 的特點有:開發(fā)模式比較簡單,編程語言易于上手,主要利用接近原生的Java或Scala語言;開發(fā)成本低,只需一套查詢邏輯就可以在兩者之間進(jìn)行使用;可用平臺無關(guān)的語言描述一個任務(wù),處理邏輯都是獨立的,兼容性高.
圖9 SummingBird系統(tǒng)架構(gòu)圖
(2)Lambdoop
Lambdoop 是一個嚴(yán)格遵循Lambda 架構(gòu)的大數(shù)據(jù)處理框架,它可以提供長時間的批處理、流式處理以及兩者之間的混合處理.Lambdoop系統(tǒng)架構(gòu)圖如圖10所示.
通過圖10 的架構(gòu)圖可看出此框架的批處理是使用Hadoop 進(jìn)行實現(xiàn)的,使用HBase 進(jìn)行存儲,流式處理使用Storm 來實現(xiàn),使用Redis 做存儲. 原始數(shù)據(jù)進(jìn)入之后使用kafka進(jìn)行一個數(shù)據(jù)的過濾,經(jīng)過聚合計算存儲在各自的存儲器中,整合成新的數(shù)據(jù)然后在進(jìn)行批處理或者流式處理,最后將各自處理的結(jié)果聚合得出最后的處理結(jié)果. Lambdoop 的特點:具有良好的可擴(kuò)展性,對所有數(shù)據(jù)處理模型提供完整的上層抽象,有完整的數(shù)據(jù)對象定義,統(tǒng)一的Java API接口,屏蔽流式處理和批處理之間的差異.
圖10 Lambdoop系統(tǒng)架構(gòu)圖
2.3.3 使用資源調(diào)度的多框架混合處理系統(tǒng)
統(tǒng)一資源管理在多框架混合處理系統(tǒng)中有重要應(yīng)用,目前比較流行的統(tǒng)一資源調(diào)度器為Yarn,它主要解決的是以下幾個問題:支持多種處理框架,提高資源的利用率,有效的資源分配以及良好的可擴(kuò)展性.常見的使用資源調(diào)度器多框架混合處理系統(tǒng)有Storm-Yarn和YarnPlus.
(1)Storm-Yarn. Yarn剛開始是為Hadoop服務(wù)的,之后研究人員開始將Storm 運行在Yarn 上用來實現(xiàn)統(tǒng)一資源管理,通過Yarn實現(xiàn)多框架混合處理計算,Storm-Yarn 系統(tǒng)架構(gòu)圖如圖11 所示. Storm-Yarn 的特點如下:一是共享底層存儲,二是節(jié)省資源,其主要的缺陷在Yarn的容錯性上.
圖11 Storm-Yarn系統(tǒng)架構(gòu)圖
(2)YarnPlus. YarnPlus 是一個使用統(tǒng)一資源調(diào)度器Yarn的多框架混合處理系統(tǒng),它能夠根據(jù)全局資源使用情況和任務(wù)資源請求在異構(gòu)任務(wù)間動態(tài)分派資源,避免不同的任務(wù)在爭奪相同的資源時出現(xiàn)錯誤.它主要運用于虛擬機(jī)(VM)生命周期的管理,可同時管理虛擬機(jī)和Hadoop 任務(wù). 其系統(tǒng)架構(gòu)如圖12 所示,系統(tǒng)架構(gòu)組件及實現(xiàn)過程在文獻(xiàn)[38]中已有詳細(xì)介紹.
圖12 YarnPlus系統(tǒng)架構(gòu)圖
Hadoop 作為批處理框架在項目成熟度上有很大的優(yōu)勢,它擅長處理靜態(tài)大數(shù)據(jù),是一種專用于批處理的處理框架.因此本文將批處理與流式處理和多框架混合處理系統(tǒng)分開,著重研究流式框架和多框架混合處理系統(tǒng)的比較和選擇.
2.1.1 流式框架比較
Storm、Spark、Samza 都是開源的分布式系統(tǒng),它們的共同特點在于:允許在運行數(shù)據(jù)流代碼時,將任務(wù)分配到一系列具有容錯能力的計算機(jī)上并行運行,具有低延遲、可擴(kuò)展和容錯性諸多優(yōu)點.雖都是流式處理系統(tǒng),但是它們之間也具有不同的特征,具體如表1所示.
(1)開發(fā)語言:開發(fā)系統(tǒng)使用的語言不同所產(chǎn)生的效果是有差異的. Storm 開發(fā)的核心語言是Clojure;Spark 剛開始提出使用的時候主要是用Scala 語言編寫的,目前開發(fā)可以使用三種語言:Scala、Java、Python;Samza主要是Scala語言.
表1 Storm、Spark、Samza框架對比
(2)容錯機(jī)制:Storm 處理容錯性的機(jī)制是利用上游數(shù)據(jù)備份和消息確認(rèn)機(jī)制,保障消息失敗后能夠重新處理[39]. Spark 可實現(xiàn)微批處理,自帶容錯機(jī)制.Samza善于利用消息系統(tǒng)Kafka的持久化和偏移量.Samza能夠監(jiān)控任務(wù)的偏移量,當(dāng)任務(wù)處理完消息后,相應(yīng)的偏移量就會被移除,而消息的偏移量會被checkpoint到持久化存儲中,并在失敗時恢復(fù)[40].
(3)延時:Spark 支持微批處理,響應(yīng)速度最慢,延時高;Storm 的響應(yīng)速度最快,延時低,其次是Samza,延時中等.
(4)數(shù)據(jù)流形式:在Storm 中,數(shù)據(jù)流以元組(Tuple)的形式進(jìn)行發(fā)送;Spark 以DStream 形式發(fā)送;Samza數(shù)據(jù)流形式是消息(Message).
(5)設(shè)計理念:Storm 和Samza 的設(shè)計理念是將數(shù)據(jù)進(jìn)行逐條處理,而Spark是微批處理.
(6)數(shù)據(jù)傳遞:Storm和Spark的數(shù)據(jù)傳遞至多一次,而Samza中涉及Kafka,它的數(shù)據(jù)至少傳遞一次.
2.1.2 流式框架選擇
具體選擇使用哪個框架進(jìn)行處理沒有嚴(yán)格的界限,關(guān)鍵在于它們服務(wù)的對象、業(yè)務(wù)的具體需求、待處理數(shù)據(jù)的狀態(tài)、處理所需時間的需求以及希望得到的結(jié)果等因素.
Storm 具有編程模型簡單、可使用多種編程語言、處理速度快等優(yōu)勢,當(dāng)進(jìn)行實時數(shù)據(jù)處理任務(wù)的時候,要求處理速度快以及使用編程語言種類多等特征時,可優(yōu)先使用Storm. 大量閱讀文獻(xiàn),從等的文獻(xiàn)總結(jié)Storm典型的應(yīng)用場景有:實時推薦系統(tǒng)、預(yù)警系統(tǒng)和實時的數(shù)據(jù)統(tǒng)計分析等[41].Storm的典型應(yīng)用案例有很多,如國內(nèi)一些大型互聯(lián)網(wǎng)企業(yè)淘寶、阿里巴巴、百度、奇虎360 等等. 在這些大型互聯(lián)網(wǎng)企業(yè)中,Storm 主要做實時的日志統(tǒng)計,從日志中獲取有用的信息.
Spark 的優(yōu)勢在于可進(jìn)行微批處理、圖計算、迭代計算和交互式查詢計算等.當(dāng)一個項目除了實時處理之外,還涉及了離線批處理、圖計算、機(jī)器學(xué)習(xí)和交互式查詢等業(yè)務(wù)功能時,那么就應(yīng)該首選Spark處理框架. Spark 主要應(yīng)用于圖數(shù)據(jù)的分析、實時推薦、實時分類以及各種算法之間的聯(lián)系密切和實時的流量數(shù)據(jù)分析. Spark 的典型應(yīng)用案例:如國內(nèi)一些大型播放器企業(yè)愛奇藝、騰訊視頻等都有使用Spark進(jìn)行數(shù)據(jù)的處理分析.
當(dāng)一個項目中存在有大量的狀態(tài)需要處理,每個分區(qū)都有許多十億位元組,那么可以選擇Samza.通過大量的文獻(xiàn)閱讀發(fā)現(xiàn)Samza 理論研究較多,具體實際應(yīng)用發(fā)表的文章很少,其典型的應(yīng)用場景還有待研究.
2.2.1 多框架混合處理系統(tǒng)的比較
SummingBird 和Lambdoop 都嚴(yán)格遵循Lambda基礎(chǔ)架構(gòu),它們之間的共性和區(qū)別如表2所示.
表2 SummingBird和Lambdoop對比
(1)語言:SummingBird主要就是通過Scala或者Java 來描述任務(wù)的;Lambdoop 提供統(tǒng)一的Java API接口,通過Java語言實現(xiàn).
(2)容錯性:SummingBird 和Lambdoop 都是完全遵循Lambda 基礎(chǔ)架構(gòu)的,批處理層具有高容錯性,加速層的臨時結(jié)果會用存儲器進(jìn)行存儲,當(dāng)加速層出錯時,數(shù)據(jù)不會出現(xiàn)錯誤,具有高容錯性.
(3)兼容性:SummingBird 和Lambdoop 可以很好的結(jié)合批處理與流式處理,兼容性很高.
(4)數(shù)據(jù)傳遞:SummingBird 將數(shù)據(jù)區(qū)分之后,要么進(jìn)行批處理要么進(jìn)行流式處理,得到的結(jié)果供用戶查看,數(shù)據(jù)至多傳遞一次;Lambdoop 處理數(shù)據(jù)有一個組合成新數(shù)據(jù)然后再進(jìn)行處理的過程,數(shù)據(jù)傳遞至少一次.
(5)數(shù)據(jù)存儲:SummingBird 使用的數(shù)據(jù)存儲技術(shù)為持久數(shù)據(jù)存儲Kafka、分布式文件存儲系統(tǒng)HDFS 和分布式數(shù)據(jù)庫HBase;Lambdoop 使用的數(shù)據(jù)存儲技術(shù)為Kafka、HBase和Redis.
(6)數(shù)據(jù)安全性:SummingBird 和Lambdoop 平臺中的數(shù)據(jù)安全性是指數(shù)據(jù)存儲安全.數(shù)據(jù)存儲技術(shù)Kafka、HDFS、HBase 和Redis 均使用冗余存儲機(jī)制,保證數(shù)據(jù)存儲的安全性.
Storm-Yarn和YarnPlus都是通過資源調(diào)度實現(xiàn)的多框架處理系統(tǒng),兩者有共性,但也有很大的區(qū)別,最大的區(qū)別就是兩者實現(xiàn)的功能差異,Storm-Yarn 是通過Hadoop 和Storm 來進(jìn)行數(shù)據(jù)處理,而YarnPlus 是基于Yarn 的異構(gòu)資源管理框架,特征對比如表3所示.
表3 Storm-Yarn和YarnPlus對比
(1)語言:Storm-Yarn 中有Storm 的處理過程,用Scala 或Java 語言進(jìn)行設(shè)計;YarnPlus 中主要實現(xiàn)的是MapReduce 和虛擬機(jī)任務(wù)資源的調(diào)度,兩者用Java語言實現(xiàn).
(2)容錯性:兩者都是依靠資源管理器Yarn 實現(xiàn)的,一旦資源管理器出錯,Yarn 會在其他節(jié)點重新運行應(yīng)用管理器,導(dǎo)致服務(wù)混亂,所以兩者的容錯性都不太好. 面對這樣的情形,在設(shè)計的時候可以設(shè)置一個備用資源管理器,當(dāng)主資源管理器出錯時可以調(diào)用備用資源管理器.
(3)資源調(diào)度層次:Storm-Yarn 只需要單層調(diào)度即可,而YarnPlus是對異構(gòu)資源進(jìn)行調(diào)度,需要雙層調(diào)度.
(4)兼容性:Storm-Yarn和YarnPlus都可以兼容不同的處理形式,Storm-Yarn 可進(jìn)行批處理和流式處理,YarnPlus 可以處理虛擬機(jī)和批處理任務(wù),兩者都有很好的兼容性.
(5)資源利用率:Storm-Yarn和YarnPlus都是用Yarn資源調(diào)度實現(xiàn)的,對資源的利用率很高.
2.2.2 多框架混合處理系統(tǒng)的選擇
YarnPlus 解決的是異構(gòu)任務(wù)問題,當(dāng)數(shù)據(jù)處理任務(wù)涉及到VM與批處理任務(wù)的時候,需選擇Yarn-Plus. SummingBird、Lambdoop、Storm-Yarn 都可以解決批處理和流式處理問題,這三者之間的選擇有以下建議:
①Storm-Yarn是通過資源調(diào)度器Yarn實現(xiàn)的,數(shù)據(jù)處理資源使用度是最高的,當(dāng)處理任務(wù)對資源利用率有很高的要求時,需選擇Storm-Yarn,具體應(yīng)用場景如鐵道供電監(jiān)控信息流的在線分析處理和實時響應(yīng)能力的應(yīng)用[42].
②當(dāng)數(shù)據(jù)處理過程比較簡單且對成本要求特別高的時候,需使用SummingBird框架,具體應(yīng)用場景如SummingBird在能源互聯(lián)網(wǎng)中的應(yīng)用[43].
③當(dāng)整個數(shù)據(jù)處理過程中數(shù)據(jù)至少傳遞一次的時候,需使用Lambdoop 框架,但是通過大量的文獻(xiàn)查閱,作者沒有查找到具體的應(yīng)用場景,可能是查閱資源有限或者還在研究之中.
常見的數(shù)據(jù)框架有批處理框架、流式處理框架和多框架混合處理系統(tǒng). Hadoop 作為批處理框架,在處理靜態(tài)大數(shù)據(jù)上有很大的優(yōu)勢,相比較其他數(shù)據(jù)處理框架它的選擇固定,只要項目判定為批處理,即可用Hadoop 作為批處理框架進(jìn)行數(shù)據(jù)處理. 流式處理框架和多框架混合處理系統(tǒng)種類較多,選擇上需要做出判斷.流式處理框架選擇上主要考慮的是功能和效率問題,多框架混合處理系統(tǒng)選擇上需考慮功能、數(shù)據(jù)傳遞和資源使用率問題.
從Hadoop 出現(xiàn)到現(xiàn)在10 余年的時間中,大數(shù)據(jù)分布式計算技術(shù)得到了迅猛發(fā)展.但大數(shù)據(jù)處理技術(shù)還未成熟,數(shù)據(jù)處理框架的發(fā)展有一定的缺陷. 批處理框架實時性差且執(zhí)行效率低,流式處理框架容錯性差且內(nèi)存使用不佳,多框架混合處理系統(tǒng)可解決的問題比較全面,但是框架的兼容性需要提高.各種框架都在不斷改進(jìn),相互競爭.優(yōu)化框架的性能是數(shù)據(jù)處理框架改進(jìn)的一個重點方向,性能的提高很大程度上是讓內(nèi)存得到有效的利用.單一框架計算處理的局限性在時代發(fā)展中越發(fā)體現(xiàn)出來,多框架混合處理系統(tǒng)將是今后大數(shù)據(jù)處理的趨勢,目前技術(shù)還有很大的欠缺,要加大對多框架混合處理系統(tǒng)的研究. 通過本文的研究和討論,下一步的工作就是重點研究多框架混合處理系統(tǒng).在具體的案例中,利用本文介紹的數(shù)據(jù)處理框架對數(shù)據(jù)進(jìn)行處理,在多框架混合處理系統(tǒng)的選擇上使用本文介紹的可選擇方案,設(shè)置一些處理參數(shù)進(jìn)行對比,驗證多框架混合處理系統(tǒng)是否處理應(yīng)用性更廣以及介紹的選擇方案是否準(zhǔn)確.