如何控制 Flink 作业在集群中的任务管理器之间正确分配/负载均衡?

时间:2021-02-15 13:21:45

标签: apache-flink flink-streaming distributed-system

如何控制 Flink 的作业分布/负载均衡(均匀或其他我们可以为 Free-Slots/Physical MEM/CPU Cores/{{1} 设置阈值限制的方式) } 等..)在集群中的任务管理器之间正确吗?

例如,我在一个集群中有 3 个任务管理器,其中一个任务管理器负载很重,即使集群中的其他任务管理器中有许多 JVM Heap Size 和其他资源可用。

enter image description here

因此,如果某个特定的任务管理器负载过重,则可能会导致许多问题,例如Free SlotsMemory issuesheap issueshigh back-pressure(可能会减慢源和接收器操作)等可能导致容器多次重启。

注意:由于这个限制,我可能没有在这里提到所有可能的问题,但通常在 Kafka lagging 中我们不应该有这样的限制。

1 个答案:

答案 0 :(得分:1)

听起来 cluster.evenly-spread-out-slots 是您正在寻找的选项。请参阅docs。将此选项设置为 true 时,Flink 将尝试在没有任何其他首选项时始终使用最少使用的 TM 中的插槽。换句话说,源将放置在最少使用的 TM 中,然后拓扑的其余部分将跟随(消费者将尝试与他们的生产者位于同一地点,以保持本地通信)。

此选项仅在您拥有一组静态 TM(例如,独立集群,而不是根据需要动态启动和停止 TM 的集群)时才有用。

就其价值而言,在许多方面,按作业(或应用程序模式)集群比会话集群更易于管理。

相关问题