我正在从ApacheStorm1.0.3升级到2.2.0,并且面临一个特殊的问题:拓扑任务不是在所有worker上运行,而是只在与spout相同的worker上运行。
我使用的是shufflegrouping,在2个螺栓和1个喷口中配置了6个工人和51个执行器。当我启动拓扑时,所有6个工人都按预期启动,但只有一个工人用喷口做所有的工作。
我需要2.2.0的特殊配置吗?我所有的拓扑在1.0.3版本下都可以正常工作
作为一个测试,我也从strom starter运行惊呼本体论,但看到的是只有一个工人做所有工作的相同问题。
提前谢谢你的帮助。
当做,
1条答案
按热度按时间epfja78i1#
当升级到storm 2.0.0时,我也被您所观察到的行为所迷惑。原因在于您正在使用的shufflegroup。根据storm性能指南:
负载感知消息
当启用了负载感知消息传递(默认)时,随机分组会考虑消息路由的其他因素。这对性能的影响取决于拓扑及其部署范围(即进程和机器上的分布)。因此,评估将topology.disable.loadaware.messaging设置为true或false对您的特定情况的影响非常有用。
这将导致spout将所有元组委托给它发现自己所在的同一个worker。要修复它并返回到旧行为,请在拓扑中设置
topology.disable.loadaware.messaging
至true
,例如