版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
流式大數(shù)據(jù)處理的三種框架Storm,Spark和Samza摘要:許多分布式計算系統(tǒng)都可以實時或接近實時地處理大數(shù)據(jù)流。本文將對Storm、Spark和Samza等三種Apache框架分別進行簡單介紹,然后嘗試快速、高度概述其異同。許多分布式計算系統(tǒng)都可以實時或接近實時地處理大數(shù)據(jù)流。本文將對三種Apache框架分別進行簡單介紹,然后嘗試快速、高度概述其異同。ApacheStorm在Storm中,先要設計一個用于實時計算的圖狀結構,我們稱之為拓撲(opology)。這個拓撲將會被提交給集群,由集群中的主控節(jié)點(masternode)分發(fā)代碼,將任務分配給工作節(jié)點(workernode)執(zhí)行。一個拓撲中包括spout和bolt兩種角色,其中spout發(fā)送消息,負責將數(shù)據(jù)流以tuple元組的形式發(fā)送出去;而bolt則負責轉換這些數(shù)據(jù)流,在bolt中可以完成計算、過濾等操作,bolt自身也可以隨機將數(shù)據(jù)發(fā)送給其他bolt。由spout發(fā)射出的tuple是不可變數(shù)組,對應著固定的鍵值對。MimbusItaskSup^MeerSpoutffurkarnodesAPACHESTORM-MimbusItaskSup^MeerSpoutffurkarnodesAPACHESTORM-BolrtApacheSparkSparkStreaming是核心SparkAPI的一個擴展,它并不會像Storm那樣一次一個地處理數(shù)據(jù)流,而是在處理前按時間間隔預先將其切分為一段一段的批處理作業(yè)。Spark針對持續(xù)性數(shù)據(jù)流的抽象稱為DStream(DiscretizedStream),一個DStream是一個微批處理(micro-batching)的RDD(彈性分布式數(shù)據(jù)集);而RDD則是一種分布式數(shù)據(jù)集,能夠以兩種方式并行運作,分別是任意函數(shù)和滑動窗口數(shù)據(jù)的轉換。RODwoAernodesSpa聚Streatninj?■宀「cache?K--tlCUECI7op?rations直limeDStream-WindowedDStream-.Original1RODwoAernodesSpa聚Streatninj?■宀「cache?K--tlCUECI7op?rations直limeDStream-WindowedDStream-.Original1?*?1RDO@2R.DD-@tim?DSt^ahrt---Tfsrietofrr^dRDD@time2中;EGHlMtdIksaik?X?CkjHDrClusterManageriSdeaajYARNSDD@bme3ApacheSamzaSamza處理數(shù)據(jù)流時,會分別按次處理每條收到的消息。Samza的流單位既不是元組,也不是Dstream,而是一條條消息。在Samza中,數(shù)據(jù)流被切分開來,每個部分都由一組只讀消息的有序數(shù)列構成,而這些消息每條都有一個特定的ID(offset)。該系統(tǒng)還支持批處理,即逐次處理同一個數(shù)據(jù)流分區(qū)的多條消息。Samza的執(zhí)行與數(shù)據(jù)流模塊都是可插拔式的,盡管Samza的特色是依賴Hadoop的Yarn(另一種資源調(diào)度器)和ApacheKafka。
028335aInpul:;S(r亡RE:J56YARNOuI|Xj1Slr?amgChangeto^Slreftm目且目StimsaJqIj028335aInpul:;S(r亡RE:J56YARNOuI|Xj1Slr?amgChangeto^Slreftm目且目StimsaJqIjPartitionedStreamparlil'Cn04MewKafkaparceliori2口artilian1TaskTaskssanira共同之處以上三種實時計算系統(tǒng)都是開源的分布式系統(tǒng),具有低延遲、可擴展和容錯性諸多優(yōu)點,它們的共同特色在于:允許你在運行數(shù)據(jù)流代碼時,將任務分配到一系列具有容錯能力的計算機上并行運行。此外,它們都提供了簡單的API來簡化底層實現(xiàn)的復雜程度。三種框架的術語名詞不同,但是其代表的概念十分相似:StormSparkStormSparkSamza$tre-amSauirceSpautsRaeei^rsConsumers$tr?annPrimitfwTuple—MessageStreamComputationBeltsTranitormatiflnsYVindowoperations對比圖面表格總結了一些不同之處:StD-rmSparkSamzaAtLeaslOnesSubSecondDeliverySemanticsExactlyOnceExceptinsamfrStateManagementStatefulsia1cstrafe&[aiefLildmbetfdeak&y-valdEstoreL血ncySubSecondDependingonbaichsizeLanguageSupportJVM-la-n^uage^cml/AtL&aslOnceExactljF-OncewithTfiden!Stateless面表格總結了一些不同之處:StD-rmSparkSamzaAtLeaslOnesSubSecondDeliverySemanticsExactlyOnceExceptinsamfrStateManagementStatefulsia1cstrafe&[aiefLildmbetfdeak&y-valdEstoreL血ncySubSecondDependingonbaichsizeLanguageSupportJVM-la-n^uage^cml/AtL&aslOnceExactljF-OncewithTfiden!StatelessRdHYDNownoruseTnderstJVWNgngu曲臥RubyPythonJav^5c:npt.PedStalja.Jawa.PythanScalaJava數(shù)據(jù)傳遞形式分為三大類:最多一次(At-most-onee):消息可能會丟失,這通常是最不理想的結果。最少一次(At-least-onee):消息可能會再次發(fā)送(沒有丟失的情況,但是會產(chǎn)生冗余)。在許多用例中已經(jīng)足夠。恰好一次(Exactly-onee):每條消息都被發(fā)送過一次且僅僅一次(沒有丟失,沒有冗余)。這是最佳情況,盡管很難保證在所有用例中都實現(xiàn)。另一個方面是狀態(tài)管理:對狀態(tài)的存儲有不同的策略,SparkStreaming將數(shù)據(jù)寫入分布式文件系統(tǒng)中(例如HDFS);Samza使用嵌入式鍵值存儲;而在Storm中,或者將狀態(tài)管理滾動至應用層面,或者使用更高層面的抽象Trident。用例這三種框架在處理連續(xù)性的大量實時數(shù)據(jù)時的表現(xiàn)均出色而高效,那么使用哪一種呢?選擇時并沒有什么硬性規(guī)定,最多就是幾個指導方針。如果你想要的是一個允許增量計算的高速事件處理系統(tǒng),Storm會是最佳選擇。它可以應對你在客戶端等待結果的同時,進一步進行分布式計算的需求,使用開箱即用的分布式RPC(DRPC)就可以了。最后但同樣重要的原因:Storm使用ApacheThrift,你可以用任何編程語言來編寫拓撲結構。如果你需要狀態(tài)持續(xù),同時/或者達到恰好一次的傳遞效果,應當看看更高層面的TrdentAPI,它同時也提供了微批處理的方式。使用Storm的公司有:Twitter,雅虎,Spotify還有TheWeatherChannel等。說到微批處理,如果你必須有狀態(tài)的計算,恰好一次的遞送,并且不介意高延遲的話,那么可以考慮SparkStreaming,特別如果你還計劃圖形操作、機器學習或者訪問SQL的話,ApacheSpark的stack允許你將一些library與數(shù)據(jù)流相結合(SparkSQL,Mllib,GraphX),它們會提供便捷的一體化編程模型。尤其是數(shù)據(jù)流算法(例如:K均值流媒體)允許Spark實時決策的促進。使用Spark的公司有:亞馬遜,雅虎,NASAJPL,eBay還有百度等。如果你有大量的狀態(tài)需要處理,比如每個分區(qū)都有許多十億位元組,那么可以選擇Samza。由于Samza將存儲與處理放在同一臺機器上,在保持處理高效的同時,還不會額外載入內(nèi)存。這種框架提供了靈活的可插拔API:它的默認execution、消息發(fā)送還有存儲引擎操作都可以根據(jù)你的選擇隨時進行替換。此外,如果你有大量的數(shù)據(jù)流處理階段,且分別來自不同代碼庫的不同團隊,那么Samza的細顆粒工作特性會尤其適用,因為它們可以在影響最小化的前提下完成增加或移除的工作。使用Samza的公司有:Linkedln,Intuit,Metamarkets,Quantiply,Fortscale等。結論本文中我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人商鋪租賃合同(含裝修補償條款)3篇
- 二零二五年度建筑塔吊租賃及勞務分包施工合同
- 2025民法典合同編修訂版修訂咨詢合同3篇
- 2025年度個人擔保業(yè)務合同模板2篇
- 二零二五年度文化旅游項目派遣員工勞動合同及文化交流協(xié)議4篇
- 養(yǎng)老院物業(yè)管理勞務合同范本(二零二五年度)3篇
- 2025年度美食城檔口租賃合同參考范本3篇
- 2025年度個人獨資企業(yè)股權轉讓合同范本與法律風險分析3篇
- 二零二五年度木工班組職業(yè)健康與安全協(xié)議合同3篇
- 2025年度農(nóng)業(yè)設施搭棚種植技術服務合同3篇
- 肺炎臨床路徑
- 外科手術鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 綜合素質(zhì)提升培訓全面提升個人綜合素質(zhì)
- 如何克服高中生的社交恐懼癥
- 聚焦任務的學習設計作業(yè)改革新視角
- 移動商務內(nèi)容運營(吳洪貴)任務三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務質(zhì)量控制方案與保障措施
- VI設計輔助圖形設計(2022版)
- 眼科學??己喆痤}
評論
0/150
提交評論