Task Slots 任务槽
每个 Worker( 即:Task Manager)是一个 JVM 进程,通常会在 单独的线程 里执行一个或者多个子任务。为了控制一个 Worker 能够接受多少个 task,在Worker上提出 Task Slot 概念,通过 Task Slot 进行控制
至少一个 slot
Task Slot 是 Task Manager 最小资源分配单位,有多少个 Task Slot,就表示可同时运行多少个工作线程
比如:一个 TaskManager 有3个 Slots ,每个 Slot 能管理对这个 Worker 分配的资源的 3分之1 的内存。 对资源分槽,意味着 Subtask 不会同其他 Subtasks 竞争内存,Subtasks 之间不受影响
slot sharing 共享slot
默认情况下,Flink允许子任务 共享 slots,即便它们是不同任务的子任务,只要属于同一个job。这样的结果就是一个 slot 会负责一个 job 的整个 pipeline 。
使用共享的 slot 的将充分的利用分槽的资源,使代价较大的 subtask 能够均匀的分布在 TaskManager 上。
如:
- 第一个图:只有 2个
task slot运行source、map - 第二个图:共享
slot的执行模式中可以并行运行6个source、map
实践中,比较好的每个 TaskManager 的 task slot 的默认数量最好是 CPU的核数。

