我有一个简单的Flink
作业,它从ActiveMQ源和接收器读取到数据库并打印。我在Kubernetes中以2 TaskManagers
部署了作业,每个Task Slots
为10(taskmanager.numberOfTaskSlots: 10
)。我配置的并行度比可用的总TaskSlots
多(在本例中为10)。
[当我看到Flink Dashboard
时,我看到此作业仅在一个TaskManager中运行,而另一个TaskManager没有作业。我通过检查安排的每个操作员来验证这一点,在Task Manager
UI页面中,管理器之一也具有所有可用插槽。我在下面附上图片以供参考。
我配置错了吗?我的理解力在哪里?有人可以解释吗?
第一个任务管理器具有足够的插槽(10),可以完全满足您的工作要求。
调度程序的默认行为是在使用另一个任务管理器中的插槽之前,充分利用一个任务管理器的插槽。如果相反,您希望Flink在所有可用的任务管理器中分配工作负载,请在cluster.evenly-spread-out-slots: true
中设置flink-conf.yaml
。 (在Flink 1.10中添加了此选项,以重新创建与Flink 1.5之前的默认行为类似的调度行为。)