Flink中的slot,task,subtask,tm,并行度这些都是什么?

1

背景介绍

2bec08530816aab1e308671e2538ad40.jpeg

flink中的概念比较多,今天就来介绍这些让人容易混淆的知识点。slot,parallelism,taskmanager,task,subtask是什么,它们之间的关系又是怎样的?

2

相关概念

f4f0320c7e81e78d976c3a0b2efb5e7c.jpeg

slot:Apache Flink中,一个"slot"(槽)是一种资源分配单位,用于执行并行的任务或算子。

为了隔离或封装资源,防止多个Task之间抢占资源。每个任务管理器(TaskManager)都包含一个或多个槽,slot数量可以在flink配置文件中设置,taskmanager.numberOfTaskSlots: 3。

在yarn上运行的话,slot数量不能超过容器的cpu的最大值。默认给每个slot都分配一个cpu。

parallelism:并行度(parallelism)指的是在执行流处理任务时,某个操作或算子并行处理的任务数量。具体而言,它表示在 Flink 应用程序中,一个算子或任务可以同时处理的输入数据流或并发任务的数量。

一个流程序的并行度:就是其所有算子中最大的并行度。

de73a1ac56bf4a41842be14c658af6d5.jpeg

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

笔记扩展

8c29a30d9dd3baf2e88e9a3b8b974b74.png

1.slot与parallelism的区别是什么?

任务槽是静态的概念,是指TaskManager具有的并发执行能力。

而并行度是动态概念,也就是TaskManager运行程序时实际使用的并发能力。

举个例子:slot相当于高速路的8条车道,最多可以同时跑8辆车,并行度就是根据上下游情况,数据量大小,kafka主题数等,若人为的设置为2,就用2条车道同时跑任务。并行度可以为8,但是要根据实际情况设置。

1ddd21442e8177db3fa165f66cf4d897.png

2.slot和Task的关系是什么?

同一种Task的多个相同的实例,不能在同一个Slot中运行。同一个Slot中,可以运行多种不同Task的实例。

3.subtask与并行度的关系?

一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。

ec0ce95959deaf6778b881b494f08774.png

坚持分享,感谢关注,大家共同进步!

632a5f173dfc7df4cbcc3dd4d78cc92d.png

c5f93b1e3630d16f1516270e80515e28.png

微信公众号|大数据进阶小铺

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据青椒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值