Storm入門

實時處理系統(類似s4, storm)對比直接用MQ來做好處在哪裏?  答:好處是它幫你做了: 1) 集羣控制。2) 任務分配。3) 任務分發 4) 監控 等等。 這就是我們爲什麼用Storm的原因。


 Storm是一個免費開源、分佈式、高容錯的流式實時計算系統。主要有以下幾個特點:

  • 分佈式系統:可橫向拓展,通過修改拓撲結構,可以很方便的擴展集羣的處理能力。

  • 運維簡單:Storm維護相對簡單,不過依賴於Zookeeper等進行分佈式管理。

  • 高度容錯:模塊都是無狀態的,這點對於符合業務場景需要的是非常有用的,隨時宕機重啓。

  • 無數據丟失:Storm創新性提出的ack消息追蹤框架和複雜的事務性處理,能夠滿足很多級別的數據處理需求。不過,越高的數據處理需求,性能下降越嚴重。

  • 多語言:爲了滿足更多的開發者,增加了這部分。


Storm主要分爲兩種組件Nimbus和Supervisor。這兩種組件都是快速失敗的,沒有狀態。任務狀態和心跳信息等都保存在Zookeeper上的,提交的代碼資源都在本地機器的硬盤上。

  • Nimbus負責在集羣裏面發送代碼,分配工作給機器,並且監控狀態。全局只有一個。

  • Supervisor會監聽分配給它那臺機器的工作,根據需要啓動/關閉工作進程Worker。每一個要運行Storm的機器上都要部署一個,並且,按照機器的配置設定上面分配的槽位數。

  • Zookeeper是Storm重點依賴的外部資源。Nimbus和Supervisor甚至實際運行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根據Zookeerper上的心跳和任務運行狀況,進行調度和任務分配的。

  • Storm提交運行的程序稱爲Topology。

  • Topology處理的最小的消息單位是一個Tuple,也就是一個任意對象的數組。

  • Topology由Spout和Bolt構成。Spout是發出Tuple的結點。Bolt可以隨意訂閱某個Spout或者Bolt發出的Tuple。Spout和Bolt都統稱爲component。

下圖是一個Topology設計的邏輯圖的例子。

各個模塊的交互流程如下:

topology03.png?_=5199529


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章