1
背景介绍
flink中的概念比较多,今天就来介绍这些让人容易混淆的知识点。slot,parallelism,taskmanager,task,subtask是什么,它们之间的关系又是怎样的?
2
相关概念
slot:Apache Flink中,一个"slot"(槽)是一种资源分配单位,用于执行并行的任务或算子。
为了隔离或封装资源,防止多个Task之间抢占资源。每个任务管理器(TaskManager)都包含一个或多个槽,slot数量可以在flink配置文件中设置,taskmanager.numberOfTaskSlots: 3。
在yarn上运行的话,slot数量不能超过容器的cpu的最大值。默认给每个slot都分配一个cpu。
parallelism:并行度(parallelism)指的是在执行流处理任务时,某个操作或算子并行处理的任务数量。具体而言,它表示在 Flink 应用程序中,一个算子或任务可以同时处理的输入数据流或并发任务的数量。
一个流程序的并行度:就是其所有算子中最大的并行度。
taskmanager:它是Flink集群中的工作节点,相当于worker的角色,负责执行具体的任务和处理数据。每个TaskManager都是一个独立的Java进程,运行在集群的物理或虚拟机上。
task:任务是执行计算的最小单元,它代表了作业执行过程中的一个具体的计算操作。在Flink中,任务通常与操作符(例如Map、Filter、Reduce等)的实例相关联,每个操作符实例对应一个任务。任务的执行是由TaskManager上的一个任务插槽(Slot)负责的。
subtask:子任务是任务的进一步划分,它表示一个任务的分片或并行执行的一部分。一个任务可能会被分为多个子任务,这些子任务可以并行执行,从而提高整个作业的执行效率。
子任务的数量由任务的并行度决定,每个任务的并行度决定了任务被分成的子任务的数量。
“Sub-Task"强调的是同一个 Operator 或者 Operator Chain 具有多个并行的 Task 。
3
关联关系
slot数量 >= 算子的最大 parilisim
taskmanager的个数=parallelism/每个tm的slot数量向上取整
slot数量 <= 总的Task数
4
笔记扩展
1.slot与parallelism的区别是什么?
任务槽是静态的概念,是指TaskManager具有的并发执行能力。
而并行度是动态概念,也就是TaskManager运行程序时实际使用的并发能力。
举个例子:slot相当于高速路的8条车道,最多可以同时跑8辆车,并行度就是根据上下游情况,数据量大小,kafka主题数等,若人为的设置为2,就用2条车道同时跑任务。并行度可以为8,但是要根据实际情况设置。
2.slot和Task的关系是什么?
同一种Task的多个相同的实例,不能在同一个Slot中运行。同一个Slot中,可以运行多种不同Task的实例。
3.subtask与并行度的关系?
一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。
坚持分享,感谢关注,大家共同进步!
微信公众号|大数据进阶小铺