美文网首页
storm并行度和executer数量,task数量关系

storm并行度和executer数量,task数量关系

作者: 正居明阳 | 来源:发表于2018-05-31 13:05 被阅读0次

并行度是executer数量,线程数

task数量可以大于并行度,这样会一个线程运行多个task,可以看看后面如何分配的

问题是怎么运行的?顺序?

最好这两者保持一致

conf.setNumWorkers(2); // 该Topology运行在Supervisor节点的2个Worker进程中

topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // 设置并行度为2,则Task个数为21

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)

.setNumTasks(4)

.shuffleGrouping("blue-spout"); // 设置并行度为2,设置Task个数为4 ,则Task个数为4

topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)

.shuffleGrouping("green-bolt"); // 设置并行度为6,则Task个数为6

1

那么,下面我们看Storm是如何计算一个Topology运行时的并行度,并分配到2个Worker中的:

计算Task总数:2乘1+4+6乘1=12(总计创建12个Task实例)

计算运行时Topology并行度:10/2=5(每个Worker对应5个Executor)

将12个Task分配到2个Worker中的5*2个Executor中:应该是每个Worker上5个Executor,将6个Task分配到5个Executor中

每个Worker中分配6个Task,应该是分配3个Yellow Task、2个Green Task、1个Blue Task

Storm内部优化:会把同类型的Task尽量放到同一个Executor中运行 这句话对么???

分配过程:从Task个数最少的开始,1个Blue Task只能放到一个Executor,总计1个Executor被占用;2个Green Task可以放到同一个Executor中,总计2个Executor被占用;最后看剩下的3个Yellow Task能否分配到5-2=3个Executor中,显然每个Yellow Task对应一个Executor

相关文章

网友评论

      本文标题:storm并行度和executer数量,task数量关系

      本文链接:https://www.haomeiwen.com/subject/lfdqsftx.html