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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

阿帕奇風(fēng)暴

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

阿帕奇火花

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

阿帕奇·薩姆扎(Apache Samza)

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

共同點(diǎn)

所有這三個(gè)實(shí)時(shí)計(jì)算系統(tǒng)都是開源, 低延遲 , 分布式,可伸縮和容錯(cuò)的 。 它們都使您能夠通過跨具有故障轉(zhuǎn)移功能的計(jì)算機(jī)集群中分布的并行任務(wù)來運(yùn)行流處理代碼。 它們還提供了簡單的API,以抽象出底層實(shí)現(xiàn)的復(fù)雜性。

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

比較矩陣

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

交付模式一般分為三類:

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

    用例

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

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

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

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

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

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

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

    結(jié)論

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

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。