Flink 架构浅析 & 并行度 Slot 的关系

JobManager 和 TaskManager之间的通信都是借助于 Akka Framework,包括任务的状态以及Checkpoint 触发等信息
Flink 架构浅析 & 并行度 Slot 的关系_第1张图片

Flink中每一个worker(TaskManager)都是一个JVM进程,它可能会在独立的线程(Solt)上执行一个或多个subtask

Flink的每个TaskManager为集群提供Solt

Slot的数量由集群中flink-conf.yaml配置文件中设置taskmanager.numberOfTaskSlots的值为3

TaskManager 从 JobManager 接收需要部署的任务,然后使用 Slot 资源启动 Task,建立数据接入的网络连接,接收数据并开始数据处理
可以看出,Flink 的任务运行其实是采用多线程的方式,这和 MR 多JVM 进程的方式有很大的区别 Fink 能够极大提高 CPU 使用效率,在多个任务和 Task 之间通过 TaskSlot方式共享系统资源,每个 TaskManager 中通过管理多个 TaskSlot 资源池进行对资源进行有效管理。

并行度案例分析

Flink集群中有3个TaskManager节点,每个TaskManager的Slot 数量为 3
Flink 架构浅析 & 并行度 Slot 的关系_第2张图片
Flink 架构浅析 & 并行度 Slot 的关系_第3张图片

Flink 架构浅析 & 并行度 Slot 的关系_第4张图片

本质:

Slot其实就是集群可以最大使用的并发数,是描述集群所拥有的并发能力

parallelism 是实际执行过程的并发度

1个 TM提供的数量 numberOfTaskSlots

如果1个TM只能提供1个Slot,并行度又为4,那么就需要启动4个TM

如果只想一个启动一个TM,那么TM就该配置多个 Slot [-Dtaskmanager.numberOfTaskSlots]

你可能感兴趣的:(大数据平台,flink,架构,big,data)