在 flink 任务管理器之间平均分配任务槽

Evenly distribute task slots across flink task managers

我有一个 flink 作业(2 个任务管理器),作业并行度为 64,任务槽为 64。

我将其中一个运算符的并行度设置为 16。此运算符(16 个并行度)槽没有在两个任务管理器之间均匀分布。它通常需要更高的任务槽,例如一个任务管理器中的 10/11 和其他任务管理器中的 5/6。

我正在使用 flink 版本 1.11.2。我尝试添加 cluster.evenly-spread-out-slots: true 但它没有用。非常感谢任何解决方案

我认为您无能为力。 Flink 调度程序将尝试将消费者任务与其生产者放在一起,以利用网络堆栈中的优化。 (只要两个通信任务在同一个 JVM 中,就会使用共享内存而不是 netty。)据我了解,cluster.evenly-spread-out-slots: true 实际上只与没有输入首选项的源相关。

通常情况下,降低部分作业的并行性会适得其反,因为它会强制进行网络洗牌(可能会阻止运算符链接),并在任务槽上造成负载偏差。