Apache Strom从1.0.3升级到2.2.0,并非所有工人都被使用

问题描述

我正在从Apache Storm 1.0.3升级到2.2.0,并面临一个特殊的问题,即拓扑任务并未在所有工作程序上运行,而仅在与Spout相同的工作程序上运行。

我正在使用shuffleGrouping,并在2个螺栓和1个喷嘴中配置了6个工人和总共51个执行器。当我启动拓扑时,所有6位工作人员都按预期方式启动,但是只有一名拥有喷嘴的工作人员正在完成所有工作。

我是否需要对2.2.0进行任何特殊配置,我的所有拓扑都可以在1.0.3版中正常工作

作为测试,我还从Strom-starter运行ExclamationTopology,但是看到只有一个工人完成所有工作的相同问题。

在此先感谢您的帮助。

此致

解决方法

升级到Storm 2.0.0时,我也对您观察到的行为感到困惑。原因在于您使用的shuffleGrouping。根据{{​​3}}:

  1. 加载感知消息

启用负载感知消息传递(默认)后,随机分组将消息路由考虑在内的其他因素。这对性能的影响取决于拓扑结构及其部署范围(即在过程和计算机上的分布)。因此,评估特定情况下将topology.disable.loadaware.messaging设置为true或false的影响非常有用。

这导致喷口将所有元组委派给发现它的同一工人。要修复此问题并返回原来的行为,请在您的拓扑中将topology.disable.loadaware.messaging设置为true,例如与

conf.put("topology.disable.loadaware.messaging",true);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...