知识卡片

Flink任务调度的三层单位

专业/工作 · 500.b

内容

Flink把”算子在集群上如何被执行”拆成三层概念:任务(Task)是物理流程图上的调度单元,代表一个算子或[[算子链如何减少线程切换开销|算子链]]的并行实例;子任务(SubTask)是同一个算子/算子链的多个并行任务实例之一,每个子任务由一个独立线程执行;任务槽(Slot)是TaskManager节点上最小的资源调度单位,独立抢占一份计算资源(主要是托管内存),负责真正运行某个子任务。这套分层的意义在于把”业务逻辑的并行度”(子任务数量)和”物理资源的划分”(槽位数量)解耦——槽位数量限制了一个TaskManager进程最多能同时跑多少子任务,而调整并行度不需要重新设计资源分配方式。

参考来源

《Flink入门与实战》第2章《定义、架构与原理》