【问题标题】:How to control Flink jobs to be distributed/load-balanced properly amongst task-managers in a cluster?如何控制 Flink 作业在集群中的任务管理器之间正确分配/负载平衡?
【发布时间】:2021-02-16 04:27:52
【问题描述】:

如何在任务中正确控制 Flink 的作业进行分布式/负载平衡(均匀或其他方式,我们可以设置Free-Slots/Physical MEM/CPU Cores/JVM Heap Size 等的阈值限制) - 集群中的经理?

例如,我在一个集群中有 3 个任务管理器,其中一个任务管理器负载很重,尽管有很多 Free Slots 并且其他资源在集群中的其他任务管理器中可用。

因此,如果某个特定的任务管理器负载过重,那么它可能会导致许多问题,例如Memory issuesheap issueshigh back-pressureKafka lagging(可能会减慢source和sink操作)等可能导致容器多次重启。

注意:由于这个限制,我可能没有在这里提到所有可能的问题,但总的来说,distributed systems 我们不应该有这样的限制。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2017-06-19
      • 1970-01-01
      相关资源
      最近更新 更多