流式传输大数据:Storm,Spark和Samza
有許多分布式計算系統可以實時或近實時處理大數據。 本文將從對三個Apache框架的簡短描述開始,并試圖對它們之間的某些相似之處和不同之處提供一個快速的高級概述。
阿帕奇風暴
在風暴 ,你設計要求的T opology實時計算的圖,然后喂到集群,其中主節點將分發工作節點來執行它之間的代碼。 在拓撲中,數據在噴口之間傳遞, 噴口以不可變的鍵值對集(稱為元組)的形式發射數據流,而螺栓則轉換這些流(計數,過濾器等)。 螺栓本身可以選擇將數據發送到處理管道中的其他螺栓。
阿帕奇火花
Spark Streaming (Spark API的核心擴展)不會像Storm那樣一次處理流。 相反,它將在處理它們之前將它們切成小批時間間隔。 連續數據流的Spark抽象稱為DStream (對于離散流 )。 DStream是RDD ( 彈性分布式數據集 )的微型批次。 RDD是分布式集合,可以通過任意功能和數據滑動窗口上的轉換( 窗口計算 )并行操作。
阿帕奇·薩姆扎(Apache Samza)
Samza的流式傳輸方法是在收到消息時一次處理一次。 Samza的流原語不是元組或Dstream ,而是消息 。 流被分成多個分區 ,每個分區都是只讀消息的有序序列,每個消息具有唯一的ID( 偏移量 )。 該系統還支持批處理 ,即按順序使用來自同一流分區的多個消息。 盡管Samza通常依賴于Hadoop的YARN ( 另一個資源協商者 )和Apache Kafka ,但Samza的執行和流模塊都可以插入。
共同點
所有這三個實時計算系統都是開源, 低延遲 , 分布式,可伸縮和容錯的 。 它們都使您能夠通過跨具有故障轉移功能的計算機集群中分布的并行任務來運行流處理代碼。 它們還提供了簡單的API,以抽象出底層實現的復雜性。
這三個框架針對相似的概念使用不同的詞匯表:
比較矩陣
下表總結了一些區別:
交付模式一般分為三類:
另一方面是狀態管理 。 存儲狀態有不同的策略。 Spark Streaming將數據寫入分布式文件系統(例如HDFS)。 Samza使用嵌入式鍵值存儲。 使用Storm,您將不得不在應用程序層滾動自己的狀態管理,或者使用稱為Trident的更高級別的抽象。
用例
這三個框架特別適合于有效處理連續的大量實時數據。 那么使用哪一個呢? 沒有硬性規定,最多只有一些通用準則。
如果您想要一個允許增量計算的高速事件處理系統, Storm將會很合適。 如果您進一步需要按需運行分布式計算,而客戶端正在同步等待結果,則可以直接使用分布式RPC (DRPC)。 最后但并非最不重要的一點,因為Storm使用Apache Thrift ,所以您可以用任何編程語言編寫拓撲。 但是,如果您需要狀態持久性和/或僅一次交付,則應查看更高級別的Trident API,該API還提供了微分批處理。
一些使用Storm的公司: Twitter,Yahoo!,Spotify,天氣頻道 。
說到微批處理,如果您必須有狀態的計算,一次發送并且不介意更高的延遲,則可以考慮使用Spark Streaming……特別是如果您還計劃進行圖形操作,機器學習或SQL訪問。 Apache Spark堆棧使您可以將多個庫與流( Spark SQL , MLlib , GraphX )結合起來,并提供方便的統一編程模型。 特別是, 流算法 (例如,流k均值 )使Spark可以實時進行決策。
一些使用Spark的公司: Amazon,Yahoo!,NASA JPL,eBay Inc.,百度…
如果您要處理的狀態很多(例如,每個分區有許多GB), Samza會將存儲和處理放在同一臺機器上,從而可以有效地處理內存中無法容納的狀態。 該框架還通過其可插拔 API提供了靈活性:默認執行,消息傳遞和存儲引擎都可以用您選擇的替代方案來代替。 此外,如果您有來自不同團隊,具有不同代碼庫的多個數據處理階段,則Samza的細粒度作業將特別適合,因為可以在添加或刪除它們的同時將漣漪效應降至最低。
一些使用Samza的公司: LinkedIn,Intuit,Metamarkets,Quantiply,Fortscale…
結論
我們只刮過《三個阿帕奇人》的表面。 我們沒有涵蓋其他許多功能,以及這些框架之間的細微差別。 另外,重要的是要牢記上述比較的局限性,因為這些系統在不斷發展。
翻譯自: https://www.javacodegeeks.com/2015/02/streaming-big-data-storm-spark-samza.html
總結
以上是生活随笔為你收集整理的流式传输大数据:Storm,Spark和Samza的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rog超杀和三星g7哪个好(华硕超杀对比
- 下一篇: 小米桌面天气怎么设置(小米桌面天气怎么设