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());

 

 

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