我可以动态增加运行Storm拓扑的并行度

时间:2018-11-30 13:30:26

标签: apache-storm

  

暴风雨版本:1.2.1

与链接here一样,以下是重新平衡风暴拓扑的语法:

storm rebalance topology-name [-w wait-time-secs] [-n new-num-workers] [-e component=parallelism]*

我有一个简单的拓扑,其中一些螺栓BoltB以并行5和numTasks = 1运行,我运行以下命令:

storm rebalance myTopo -n 5(same as earlier) -w 20 -e BoltB=10

它停用了拓扑,但是为BoltB使用了相同数量的并行性激活了它,我是否丢失了某些东西,是否应该以这种方式工作?我是否必须为BoltB提供更高的numTasks实现这一目标?

1 个答案:

答案 0 :(得分:1)

请阅读http://storm.apache.org/releases/2.0.0-SNAPSHOT/Understanding-the-parallelism-of-a-Storm-topology.html

简而言之,一旦提交拓扑,Storm拓扑中组件的任务数就是静态的。因此,如果您在拓扑设置中为setNumTasks(1)boltB,则boltB只会有1个实例,这意味着在boltB上只有1个线程在运行时间。

您可以将任务看作是可以在不重新部署的情况下将boltB工作分散到多少线程的上限。 Storm为每个任务创建一个螺栓实例,然后将其分布在您在安装过程中通过parallelism_hint参数告诉您使用的多个线程中。

parallelism_hint设置螺栓的执行器(线程)的初始数量。可以通过rebalance命令更改执行程序的数量,而无需重新部署拓扑,但是您不能将执行程序的数量提高到大于任务数量。