Storm中Topology、Worker、Executor和Task的關係

Storm中Topology、Worker、Executor和Task的關係,如圖:

1、1個Topology對應1個或多個Worker進程,1個Worker進程只屬於1個Topology

2、1個Worker進程包含1個或多個Executor線程

3、1個Executor線程可以執行同類型的1個或多個Task,要麼都是spout的Task,要麼都是bolt的Task。如果 Executor數量 < Task數量 ,Executor線程會循環順序調用Task實例。

4、1個Task就是最終運行spout或bolt的實例

注意

  • 默認情況下:1個Topology使用1個Worker,1個Worker使用1個Executor,1個Executor執行1個Task

  • 可以配置 Executor線程數 <= Task數量,在資源充足下,建議兩者相等

  • 想要提高並行度,提高的優先級:Worker數量 > Executor數量 > Task數量

上圖例子代碼:

TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("spoutTask", spoutTask, 2).setNumTasks(3);         //executor線程數爲 2,task爲 3
builder.setBolt("boltTask", boltTask, 2).setNumTasks(4).shuffleGrouping("spoutTask");  //executor線程數爲 2,task爲 4

Config conf = new Config();
conf.setNumWorkers(2);     //設置Topology的Workers數爲 2
StormSubmitter.submitTopology("test", conf, builder.createTopology());

 

 

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