apache-storm - Apache Strom 从 1.0.3 升级到 2.2.0 并没有使用所有的 worker
问题描述
我正在从 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。根据风暴性能指南:
- 负载感知消息
启用负载感知消息传递(默认)时,随机分组会考虑消息路由的其他因素。这对性能的影响取决于拓扑及其部署足迹(即分布在进程和机器上)。因此,评估将 topology.disable.loadaware.messaging 设置为 true 或 false 对您的特定情况的影响是有用的。
这导致 spout 将所有元组委托给它发现自己所在的同一个 worker。要修复它并返回旧行为,请在您的拓扑中设置topology.disable.loadaware.messaging
为true
,例如使用
conf.put("topology.disable.loadaware.messaging", true);
推荐阅读
- elasticsearch - 按复杂对象字段查询
- java - 根据条件创建子列表并执行操作
- c# - VS 2019 在发布模式下优化代码坏了?
- javascript - 基于 nuxt.config.js 中的服务器创建动态环境变量
- javascript - 在 Javascript 中的函数参数中声明类
- java - 除了 C++。是否存在具有指针的强类型语言,指针对强类型语言有影响吗?
- kotlin - 合并 kotlin 流
- powershell - 如何使用单个 PowerShell 命令查看所有机器级环境变量?
- concurrency -
使用范围和结构锁定安全? - apache-nifi - Nifi DistributedCache查找问题