Storm架構分析

Storm是個實時的、分佈式以及具備高容錯的計算系統。
  1) Storm 特性
   1. 易於擴展。對於擴展,你只需要添加機器和改變對應的topology(拓撲)設置。Storm使用Zookeeper進行集羣協調,這樣可以充分的保證大型集羣的良好運行。
   2. Storm的容錯機能:一旦topology遞交,Storm會一直運行它直到topology被廢除或者被關閉。而在執行中出現錯誤時,也會由Storm重新分配任務。
  2)Storm架構
   Storm物理架構

                                 Storm物理架構圖

Storm邏輯架構

                                 Storm邏輯架構

   Spout:在一個topology中產生源數據流的組件,從來源處讀取數據並放入topology。Spout中最主要的方法就是nextTuple(),該方法會發射一個新的tuple到topology,如果沒有新tuple發射則會簡單的返回。
   Bolt:在一個topology中接受數據然後執行處理的組件。
3) Stream Groupings:
   Stream Grouping定義了一個流在Bolt任務間該如何被切分。這裏有Storm提供的6個Stream Grouping類型:
   1. 隨機分組(Shuffle grouping)隨機分發tuple到Bolt的任務,保證每個任務獲得相等數量的tuple。
   2. 字段分組(Fields grouping):根據指定字段分割數據流,並分組。例如,根據“user-id”字段,相同“user-id”的元組總是分發到同一個任務,不同“user-id”的元組可能分發到不同的任務。
   3. 全部分組(All grouping):tuple被複制到bolt的所有任務。這種類型需要謹慎使用。
   4. 全局分組(Global grouping):全部流都分配到bolt的同一個任務。明確地說,是分配給ID最小的那個task。
   5. 無分組(None grouping):你不需要關心流是如何分組。目前,無分組等效於隨機分組。但最終,Storm將把無分組的Bolts放到Bolts或Spouts訂閱它們的同一線程去執行(如果可能)。
   6. 直接分組(Direct grouping):這是一個特別的分組類型。元組生產者決定tuple由哪個元組處理者任務接收。
   當然還可以實現CustomStreamGroupimg接口來定製自己需要的分組。

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