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



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

我观察到以下行为:

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

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

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

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

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

(使用 Flink v1.6.3 运行(

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

更新

此问题已针对 Flink>= 1.9.2 修复。为了启用任务分散,您必须在flink-conf.yaml中配置cluster.evenly-spread-out-slots: true

最新更新