【问题标题】:Apache STORM - Tuples Distribution among workersApache STORM - 工作人员之间的元组分布
【发布时间】:2019-11-30 08:31:44
【问题描述】:

我正在使用 Apache STORM 开发一个项目,我使用的拓扑依次由 Spout、BoltA(2 Executors) 和 BoltB(1 Executor) 组成。

                                      Spout --> BoltA --> BoltB

我的理解是,Shuffle 分组在螺栓任务中平均分配元组,但我注意到只有当所有任务都在同一个工作人员上时才是正确的。当有超过 1 个工作人员时,假设有 2 个工作人员,并且每个工作人员托管一个相同螺栓的任务实例,那么负载甚至不在这两个任务中。

使用我的拓扑 - 我的一项任务负载为 90%,第二项任务负载为 0%。

为什么多个工作人员会有不同。

【问题讨论】:

  • 我使用的Storm版本是2.0.1
  • 您使用的是常规的随机分组,还是本地或随机分组?

标签: grouping apache-storm shuffle


【解决方案1】:

如果 Spout 和 BoltA 之间有 shuffle 连接,则元组应该均匀分布。

正如 Stig Rohde Døssing 所提到的,您提到的行为与“本地或随机分组”(参见Storm Concepts)相匹配,它将优先将元组发送到本地工作进程上的任务。

因此,如果 Spout 的并行度为 1,并且 BoltA 任务之一在同一个工作进程上,则来自 spout 的元组将优先路由到该本地下游任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多