场景
一个工厂有三个车间每个车间两条生产线
生产流程如下
原料->加工->过滤->分类->美化->包装->下线
JobManager:工厂
在上述场景中,工厂就是jobManager,负责协调、调度和监控整个生产过程
TaskManager:车间
在上述场景中,车间就是taskManager,按照工厂的分配进行生产,所有的问题上报工厂
slot:流水线
在上述场景中,车间的流水线就是slot,是工作台,真正干活的地方,每个车间有2个流水线,3个车间,也就是说这个工厂有6条流水线,就是6个slot
Task:工作
在上述场景中,每一个任务都是一个task,共计7个task
在代码中,source.map.filter.groupby....每一个算子可以成为一个task
Parallelism:并行度
同一个任务(Task),在6个工作台上都可以同时进行,并行度可以设置为6
SubTask:工作实例
在每个工作台上运行的相同任务,相当于任务的实例,也就是subTask
官方概念
jobmanager
Flink中的JobManager是整个Flink作业的主机控制节点,负责协调、调度和监控整个作业的执行过程。JobManager有两种类型:一个是执行图 JobGraph 的 JobManager,另一个是执行宝贵资源的 ResourceManager。JobManager负责接收作业提交请求,将作业转换为执行图JobGraph,并将JobGraph提交给TaskManager执行。JobManager还负责故障恢复,当TaskManager或JobManager发生错误时,JobManager可以跟踪作业状态并计划故障恢复。此外,JobManager还可以协调和分配集群资源,并管理作业的执行策略和调度。
taskmanager
Flink中的TaskManager是Flink分布式计算框架的执行节点。一个Flink集群可以包含多个TaskManager,每个TaskManager可以运行多个任务(Task)。
TaskManager的主要职责是:
- 接收并处理来自JobManager的任务分配,将任务划分成不同的子任务(Subtask)并分配到对应的线程池中执行;
- 管理和维护线程池,包括线程的创建、销毁、线程的资源分配和管理等;
- 从上游的Task或Source中拉取数据,并将数据发送给下游的Task或Sink。
TaskManager和JobManager之间通过RPC进行通信,JobManager会将任务分配给TaskManager后,TaskManager会根据任务的资源需求分配对应的资源并启动任务执行。如果TaskManager在执行任务期间发生故障,JobManager会重新分配任务到其他TaskManager上,以保证任务的正确执行。
Parallelism
指的是在Flink中并行处理数据的任务数。在Flink中,每个任务都可以并行处理数据,而并行度就是指这些任务的数量。在资源充足的情况下,并行度越高,处理数据的速度也就越快。
slot
在Flink中,任务运行需要占用资源,资源的抽象单位称为slot。每个slot包含一定数量的CPU和内存等资源。一个任务需要占用一个或多个slot才能运行。
task
在Flink中,一个任务是指对应一个数据流操作的并行执行实体。任务可以是source任务、transformation任务或sink任务。
subtask
每个任务会被拆分成多个子任务,这些子任务被称为subtask。每个subtask都只处理数据集中的一部分,拆分成多个subtask后可以实现并行处理。