Flink的TaskManager与slot

Flink中每一个TaskManager都是一个 JVM 进程,它可能会在独立的线程上执行一个或多个subtask。为了控制一个TaskManager能接收多少个task,TaskManager通过task slot 来进行控制(一个TaskManager至少有一个task slot)。
每个task slot表示TaskManager拥有资源的一个固定大小的子集 。假如一个 TaskManager 有三个slot,那么它会将其管理的内存分成三份给各个slot。资源slot化意味着一个 subtask 将不需要跟来自其他 job 的 subtask 竞争被管理的内存,取而代之的是它将拥有一定数量的内存储备。需要注意的是,这里不会涉及到 CPU 的隔离,slot 目前仅仅用来隔离 task 的受管理的内存。
Task Slot是静态的概念,是指 TaskManager 具有的并发执行能力,可以通过参数 taskmanager.numberOfTaskSlots进行配置;而并行度parallelism是动态概念, 即 TaskManager 运行程序时实际使用的并发能力,可以通过参数 parallelism.default 进行配置。
默认情况下,Flink 允许子任务共享 slot,即使它们是不同任务的子任务(前提是它们来自同一个 job)。 这样的结果是,一个 slot 可以保存作业的整个管道。

你可能感兴趣的:(flink,flink)