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

Can I increase parallelism of running Storm topology dynamically

Storm Version: 1.2.1

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

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

我有一个简单的拓扑结构,其中有一些 bolt BoltB 运行 paralleilism 5 和 numTasks = 1,我 运行 以下命令:

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

它停用了拓扑,但以 BoltB 的相同并行数激活了它,我是否遗漏了什么,这应该以这种方式工作吗,我是否必须为 [=13= 设置 numTasks ] 更高才能实现这个?

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

简而言之,在您提交拓扑后,Storm 拓扑中组件的任务数是静态的。因此,如果您在拓扑设置中为 boltB 执行 setNumTasks(1),那么将永远只有 1 个 boltB 实例,这意味着将只有 1 个线程 运行 boltB一次。

您可以将任务视为在不重新部署的情况下可以分布 boltB 工作的线程数上限。 Storm 为每个任务创建一个螺栓实例,然后在设置期间通过 parallelism_hint 参数将它们分布到您告诉它使用的多个线程中。

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