apache-flink - 如何控制 Flink 作业在集群中的任务管理器之间正确分配/负载平衡?
问题描述
如何在集群中的任务管理器中正确控制 Flink 的作业在集群中的任务管理器之间进行分布式/负载平衡(均匀或其他方式,我们可以设置Free-Slots
/ Physical MEM
/ CPU Cores
/JVM Heap Size
等的阈值限制)?
例如,我在一个集群中有 3 个任务管理器,其中一个任务管理器负载很重,即使Free Slots
集群中的其他任务管理器中有很多资源可用。
因此,如果一个特定的任务管理器负载很重,那么它可能会导致许多问题,例如,、、(Memory issues
可能会减慢源和接收器操作)等,这可能会导致容器多次重新启动。heap issues
high back-pressure
Kafka lagging
注意:由于这个限制,我可能没有在这里提到所有可能的问题,但总的来说distributed systems
我们不应该有这样的限制。
解决方案
这听起来像是cluster.evenly-spread-out-slots
您正在寻找的选项。请参阅文档。将此选项设置为 true 时,当没有任何其他偏好时,Flink 将尝试始终使用最少使用 TM 中的插槽。换句话说,源将放置在最少使用的 TM 中,然后拓扑的其余部分将遵循(消费者将尝试与其生产者位于同一地点,以保持本地通信)。
只有当您拥有一组静态 TM(例如,独立集群,而不是根据需要动态启动和停止 TM 的集群)时,此选项才会有用。
值得一提的是,在许多方面,按作业(或应用程序模式)集群比会话集群更易于管理。
推荐阅读
- batch-file - 命令列出 Windows 中特定子文件夹中的所有 .java 文件
- anylogic - 运行一段时间后的概率容量 - ANYLOGIC
- android - “Android.Bluetooth.LE.AdvertiseFailure.DataTooLarge”在使用 AddServiceData 发送数据时出错
- colors - 在 Outlook 中同步颜色类别
- c - 如何在 ETAS OS 上运行的微控制器中获取日期信息?
- docker - Jira 在 1 个 docker 映像中带有插件
- symfony - Lexik JWT,如何只允许用户的信息
- haskell - 理解函子和幺半群
- node.js - 不能同时运行strapi和反应
- python - 使用 splinter/selenium 加速网页解析