是否有可能在运行时在apache风暴中动态添加任务,而不仅仅是重新平衡执行程序

时间:2017-02-27 14:07:11

标签: apache-storm scheduling dynamically-generated

我需要一个暴风雨的功能,我知道(基于文档)还没有实现。我需要在运行时添加更多任务,而不需要初始化大量任务,因为它可能会导致性能问题。因为每个执行程序运行多个任务不会增加并行度 - 执行程序总是有一个用于其所有任务的线程,这意味着任务在执行程序上串行运行。

我知道可以使用rebalance命令在运行时添加执行程序和工作进程,并且有一个规则,即#executors< =#tasks,这意味着任务的数量在运行时应该是静态的,但我很好奇很难(如果不是不可能的话)将此功能添加到风暴中。

有没有办法在暴风雨中实现此功能,或者根本无法完成?如果有办法,请告诉我如何做到这一点。

1 个答案:

答案 0 :(得分:1)

不确定你的意思"因为这些额外的任务是连续运行的"。

任务是Storm用于利用数据并行性。从理论上讲,可以添加代码以在运行时更改任务数量。但这将是一个巨大的变化,AFAIK没有计划添加此功能。

比较http://storm.apache.org/releases/1.0.3/Understanding-the-parallelism-of-a-Storm-topology.html

因为密钥是基于任务哈希分配的,所以更改任务数量需要将所有密钥重新分配给新任务。如果运算符构建基于密钥的内部状态,则此状态需要按键进行分区并相应地重新分配。