调度—是否可以在ApacheStorm的运行时动态添加任务,而不仅仅是重新平衡执行者

uujelgoq  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(354)

我需要在风暴的功能,我知道(根据文件)还没有实现。我需要在运行时添加更多的任务,而不需要初始的大量任务,因为这可能会导致性能问题。因为每个执行器运行多个任务并不能提高并行度——执行器总是有一个线程用于其所有任务,这意味着任务在执行器上串行运行。
我知道rebalance命令可以用于在运行时添加executors和worker进程,并且有一个规则#executors<=#tasks,这意味着在运行时任务的数量应该是静态的,但是我很好奇将这个特性添加到storm有多难(如果不是不可能的话)。
有没有办法在storm中实现这个功能,或者根本做不到?如果有办法,请告诉我怎么做。

o75abkj4

o75abkj41#

不知道你说的“因为那些额外的任务是连续运行的”是什么意思。
任务是用来利用数据并行性的。理论上,在运行时添加代码来改变任务的数量是可能的。但这将是一个巨大的变化,而且目前还没有计划添加此功能。
比较http://storm.apache.org/releases/1.0.3/understanding-the-parallelism-of-a-storm-topology.html
由于密钥是基于哈希分配给任务的,因此更改任务数需要将所有密钥重新哈希到新任务。如果一个操作符建立了一个基于键的内部状态,那么这个状态也需要按键进行分区并相应地重新分配。

相关问题