-
场景
Flink 批任务提交中,如果任务运行结束后,整个作业的 TaskManager 会释放掉资源,下次如果继续往这个 Session 集群新提交任务的话,会重新申请 TaskManager。但是如果作业需要较多的 TaskManager 的话,申请资源的时间会较长,对于分钟级别的调度任务会有较大的影响。 -
原因
通常会出现这个日志:TaskExecutor exceeded the idle timeout.
resourcemanager.taskmanager-timeout:
这个配置可使TaskManager 尽可能的常驻,减少频繁申请资源的时间,默认TaskManager 超时时间是30s,源码如下:

- ResourceManagerOptions类
-
解决方法
如果要让分钟级别的任务运行的集群中的 TaskManager 尽可能常驻,可以通过增加 resourcemanager.taskmanager-timeout 参数的值来实现。具体来说,如果将该参数设置为 10 分钟,那么 Flink Session 集群中有空余的 TaskManager 超过 10 分钟,就会将它们的资源释放掉,以便其他作业可以使用。这样可以减少频繁申请资源的时间,提高作业的整体执行效率。