Flink任务管理器中的插槽是什么?

时间:2020-04-29 11:37:47

标签: apache-flink

在Apache Flink系统架构中,我们具有客户端进程,主进程(JobManager),辅助进程(TaskManager)的概念。

上面的每个进程基本上都是JVM进程。 TaskManager执行单个任务,每个任务都在一个线程中执行。因此,此管理器到进程或任务到线程的映射很清楚。

TaskManager中的插槽如何?插槽映射到什么?

1 个答案:

答案 0 :(得分:1)

Flink中的任务槽是资源管理和调度的主要单元。

当Dispatcher(Flink Master的一部分)接收到要执行的作业时,它将查看该作业的执行图以查看执行该作业需要多少个插槽,并从资源管理器中请求多个插槽。然后,资源管理器将尽其所能获得这些插槽(有一个纱线资源管理器,一个Kubernetes资源管理器等)。例如,Kubernetes资源管理器将根据需要启动新的任务管理器Pod,以创建更多的插槽。

每个任务管理器都配置有一定数量的内存,一定数量的CPU内核以及为执行任务提供的一定数量的插槽。这些插槽共享任务管理器可用的资源。

通常,将从作业的一个并行切片中为任务分配一个插槽,并且 执行作业所需的插槽数通常与并行度最高的任务的并行度相同。我之所以说“通常”,是因为如果您禁用插槽共享(插槽共享允许多个任务共享同一插槽),则将需要更多的插槽-但几乎从来没有理由禁用插槽共享。

下图显示了一个简单作业的执行图,其中源,映射和窗口运算符的并行度为2,而接收器的并行度为1。源和映射已链接到一个任务中,因此此执行图包含总共5个需要分配给任务槽的任务。

execution graph

下一个图显示了两个TM,每个TM具有一个插槽,您可以看到调度程序如何在这2个插槽中分配5个任务。

task slots