日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

流式传输大数据:Storm,Spark和Samza

發(fā)布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 流式传输大数据:Storm,Spark和Samza 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有許多分布式計算系統可以實時或近實時處理大數據。 本文將從對三個Apache框架的簡短描述開始,并試圖對它們之間的某些相似之處和不同之處提供一個快速的高級概述。

阿帕奇風暴

在風暴 ,你設計要求的T opology實時計算的圖,然后喂到集群,其中主節(jié)點將分發(fā)工作節(jié)點來執(zhí)行它之間的代碼。 在拓撲中,數據在噴口之間傳遞, 噴口以不可變的鍵值對集(稱為元組)的形式發(fā)射數據流螺栓則轉換這些流(計數,過濾器等)。 螺栓本身可以選擇將數據發(fā)送到處理管道中的其他螺栓。

阿帕奇火花

Spark Streaming (Spark API的核心擴展)不會像Storm那樣一次處理流。 相反,它將在處理它們之前將它們切成小批時間間隔。 連續(xù)數據流的Spark抽象稱為DStream (對于離散流 )。 DStream是RDD ( 彈性分布式數據集 )的微型批次。 RDD是分布式集合,可以通過任意功能和數據滑動窗口上的轉換( 窗口計算 )并行操作。

阿帕奇·薩姆扎(Apache Samza)

Samza的流式傳輸方法是在收到消息時一次處理一次。 Samza的流原語不是元組或Dstream ,而是消息 。 流被分成多個分區(qū) ,每個分區(qū)都是只讀消息的有序序列,每個消息具有唯一的ID( 偏移量 )。 該系統還支持批處理 ,即按順序使用來自同一流分區(qū)的多個消息。 盡管Samza通常依賴于Hadoop的YARN ( 另一個資源協商者 )和Apache Kafka ,但Samza的執(zhí)行和流模塊都可以插入。

共同點

所有這三個實時計算系統都是開源, 低延遲 , 分布式,可伸縮和容錯的 。 它們都使您能夠通過跨具有故障轉移功能的計算機集群中分布的并行任務來運行流處理代碼。 它們還提供了簡單的API,以抽象出底層實現的復雜性。

這三個框架針對相似的概念使用不同的詞匯表:

比較矩陣

下表總結了一些區(qū)別:

交付模式一般分為三類:

  • 最多一次 :消息可能會丟失。 通常這是最不希望的結果。
  • 至少一次 :可以重新發(fā)送郵件(不丟失,但重復)。 對于許多用例來說,這已經足夠了。
  • 恰好一次 :每封郵件僅發(fā)送一次,且一次(無損失,無重復)。 盡管很難在所有情況下都保證,但這是一個理想的功能。
  • 另一方面是狀態(tài)管理 。 存儲狀態(tài)有不同的策略。 Spark Streaming將數據寫入分布式文件系統(例如HDFS)。 Samza使用嵌入式鍵值存儲。 使用Storm,您將不得不在應用程序層滾動自己的狀態(tài)管理,或者使用稱為Trident的更高級別的抽象。

    用例

    這三個框架特別適合于有效處理連續(xù)的大量實時數據。 那么使用哪一個呢? 沒有硬性規(guī)定,最多只有一些通用準則。

    如果您想要一個允許增量計算的高速事件處理系統, Storm將會很合適。 如果您進一步需要按需運行分布式計算,而客戶端正在同步等待結果,則可以直接使用分布式RPC (DRPC)。 最后但并非最不重要的一點,因為Storm使用Apache Thrift ,所以您可以用任何編程語言編寫拓撲。 但是,如果您需要狀態(tài)持久性和/或僅一次交付,則應查看更高級別的Trident API,該API還提供了微分批處理。

    一些使用Storm的公司: Twitter,Yahoo!,Spotify,天氣頻道 。

    說到微批處理,如果您必須有狀態(tài)的計算,一次發(fā)送并且不介意更高的延遲,則可以考慮使用Spark Streaming……特別是如果您還計劃進行圖形操作,機器學習或SQL訪問。 Apache Spark堆棧使您可以將多個庫與流( Spark SQL , MLlib , GraphX )結合起來,并提供方便的統一編程模型。 特別是, 流算法 (例如,流k均值 )使Spark可以實時進行決策。

    一些使用Spark的公司: Amazon,Yahoo!,NASA JPL,eBay Inc.,百度…

    如果您要處理的狀態(tài)很多(例如,每個分區(qū)有許多GB), Samza會將存儲和處理放在同一臺機器上,從而可以有效地處理內存中無法容納的狀態(tài)。 該框架還通過其可插拔 API提供了靈活性:默認執(zhí)行,消息傳遞和存儲引擎都可以用您選擇的替代方案來代替。 此外,如果您有來自不同團隊,具有不同代碼庫的多個數據處理階段,則Samza的細粒度作業(yè)將特別適合,因為可以在添加或刪除它們的同時將漣漪效應降至最低。

    一些使用Samza的公司: LinkedIn,Intuit,Metamarkets,Quantiply,Fortscale…

    結論

    我們只刮過《三個阿帕奇人》的表面。 我們沒有涵蓋其他許多功能,以及這些框架之間的細微差別。 另外,重要的是要牢記上述比較的局限性,因為這些系統在不斷發(fā)展。

    翻譯自: https://www.javacodegeeks.com/2015/02/streaming-big-data-storm-spark-samza.html

    總結

    以上是生活随笔為你收集整理的流式传输大数据:Storm,Spark和Samza的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。