暴风雨版本: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实现这一目标?
答案 0 :(得分:1)
简而言之,一旦提交拓扑,Storm拓扑中组件的任务数就是静态的。因此,如果您在拓扑设置中为setNumTasks(1)
做boltB
,则boltB
只会有1个实例,这意味着在boltB
上只有1个线程在运行时间。
您可以将任务看作是可以在不重新部署的情况下将boltB
工作分散到多少线程的上限。 Storm为每个任务创建一个螺栓实例,然后将其分布在您在安装过程中通过parallelism_hint
参数告诉您使用的多个线程中。
parallelism_hint
设置螺栓的执行器(线程)的初始数量。可以通过rebalance命令更改执行程序的数量,而无需重新部署拓扑,但是您不能将执行程序的数量提高到大于任务数量。