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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Storm概念学习系列之storm的特性

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Storm概念学习系列之storm的特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  不多說,直接上干貨!

?

?

storm的特性

  Storm 是一個開源的分布式實時計算系統,可以簡單、可靠地處理大量的數據流。 Storm支持水平擴展,具有高容錯性,保證每個消息都會得到處理,而且處理速度很快(在一個小集群中,每個節點每秒可以處理數以百萬計的消息)。 Storm 的部署和運維都很便捷,而且更為重要的是,可以使用任意編程語言來開發應用

?

?

?

下面介紹 Storm 的特點
(1)編程模型簡單
  在大數據處理方面, Hadoop 為開發者提供了 MapReduce 原語,使并行批處理程序變得非常簡單和優美。同樣, Storm 也為大數據的實時計算提供了一些簡單優美的原語,這大大降低了開發并行實時處理任務的復雜性,可以快速、高效地開發應用。


(2)可擴展

  在 Storm 集群中真正運行 Topology 的主要有 3 個實體:工作進程、線程和任務。 Storm集群中的每臺機器都可以運行多個工作進程每個工作進程又可創建多個線程每個線程可以執行多個任務,任務是真正進行數據處理的實體,開發的 Spout、 Bolt 就是作為一個或者多個任務的方式執行的。因此,計算任務在多個線程、進程和服務器之間并行進行,支持靈活的水平擴展。


(3)高可靠性
  Storm 可以保證 Spout 發出的每條消息都能被“完全處理”,這也是直接區別于其他實時系統的地方,如 S4。

?

?


注意:

  Spout 發出的消息后續可能會觸發產生成千上萬條消息,可以形象地理解為一棵消息樹,其中 Spout 發出的消息為樹根, Storm 會跟蹤這棵消息樹的處理情況,只有當這棵消息樹中的所有消息都被處理了,Storm 才會認為 Spout 發出的這個消息已經被“完全處理”如果這棵消息樹中的任何一個消息處理失敗了,或者整棵消息樹在限定的時間內沒有“完全處理”,那么 Spout 發出的消息就會重發。

  考慮到盡可能減少內存的消耗, Storm 并不會跟蹤消息樹中的每個消息,而是采用了一些特殊的策略,它把消息樹當作一個整體來跟蹤,對消息樹中所有消息的唯一 ID 進行異或計算,通過是否為 0 來判定 Spout 發出的消息是否被“完全處理”,這極大地節約了內存并簡化了判定邏輯,后面會詳細介紹這種機制。
  在這種模式下,每發送一個消息,都會同步發送一個 ack/fail,對于網絡的帶寬會有一定的消耗,如果對可靠性要求不高,則可使用不同的 emit 接口關閉該模式。
  上面所說的, Storm 保證了每個消息至少被處理一次,但是對于有些計算場合,會嚴格要求每個消息只被處理一次, Storm 的 0.7.0 引入了事務性拓撲,解決了這個問題,后面章節會詳述。

?


(4)高容錯性
  如果在消息處理過程中出了一些異常, Storm 會重新安排這個出問題的處理單元。 Storm保證一個處理單元永遠運行(除非顯式殺掉該處理單元)。當然,如果處理單元中存儲了中間狀態,那么當處理單元重新被 Storm 啟動時,需要將自身處理的中間狀態恢復。

?

(5)支持多種編程語言
  除了用 Java 實現 Spout 和 Bolt,還可以使用其他編程語言來完成這項工作,這一切得益于 Storm 的多語言協議。多語言協議是 Storm 內部的一種特殊協議,允許 Spout 或 Bolt 使用標準輸入和標準輸出來傳遞消息,傳遞的消息為單行文本或多行 JSON 編碼的格式。

  Storm 支持多語言編程主要是通過 ShellBolt、 ShellSpout 和 ShellProcess 這些類來實現的,這些類都實現了 IBolt 和 ISpout 接口,以及讓 Shell 通過 Java 的 ProcessBuilder 類來執行腳本或者程序的協議。

  可以看到,采用這種方式,每個 Tuple 在處理時都需要進行 JSON 的編解碼,因此在吞吐量上會有較大影響。



(6)支持本地模式
  Storm 有一種“本地模式”,也就是在進程中模擬一個 Storm 集群的所有功能,以本地模式運行 Topology 與在集群上運行 Topology 類似,這對于開發和測試來說非常有用


(7)高效
  用 ZeroMQ 作為底層消息隊列,保證消息能被快速處理。

?

轉載于:https://www.cnblogs.com/zlslch/p/5989260.html

總結

以上是生活随笔為你收集整理的Storm概念学习系列之storm的特性的全部內容,希望文章能夠幫你解決所遇到的問題。

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