设置算子并行度大于默认并行度时,Flink任务槽分布不均匀

Gil*_*lbl 4 apache-flink flink-streaming

我正在包含 3 个任务管理器(位于 3 个 Kubernetes Pod 之上)的集群上运行 Flink 作业。Job的默认并行度为9,其中一个算子设置为并行度18。Job的任务槽数设置为18(最大并行度值)。

我观察到以下行为:

设置为并行度 18 的运算符在所有任务槽之间平均分配。

所有其他运算符(设置为默认值 - 9)并不是均匀分布的。例如:

  • TM1:运行2个子任务
  • TM2:运行5个子任务
  • TM3:运行2个子任务

有人可以解释一下以下内容吗 -

  • 是什么原因导致这种分布不均匀呢?
  • 我可以控制操作员分配的平衡吗?我该怎么做?

(使用Flink v1.6.3运行)

Til*_*ann 6

目前,Flink 不支持控制任务如何在不同的TaskManagers. Flink 假设所有槽都是相等的,因此不会尝试均匀地分散任务。不过,社区希望添加此功能。这是相应的问题

更新

Flink >= 1.9.2 已修复该问题。为了能够分散任务,您必须cluster.evenly-spread-out-slots: trueflink-conf.yaml.