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());
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240022.html
標籤:其他
上一篇:滲透測驗系列——資訊收集
下一篇:牛客 - 共鳴問題(貪心+思維)
