Flink(4)运行时架构

2021-03-07  本文已影响0人  hk_faith

Flink 运行时的组建

作业管理器(JobManager)

任务管理器 (TaskManager)

资源管理(ResourceManager)

分发起(Dispatcher)

任务提交流程

任务提交流程.png

任务提交流程 (Yarn)

任务提交流程(Yarn).png

任务提交原理

任务调度原理.png

并行度

一个特定算子的子任务的个数被称为其并行度。一般情况下,
一个stream的并行度,可认为就是其所有算子中最大的并行度


并行度.png

TaskManager 和 Slots

.slotSharingGroup("red")

结果: 默认的共享组是"default",设置不同的共享组后,整个计算任务会 ,比之前会占多个slot

例如:


并行子任务的分配.png

flink 子任务的分配

flink子任务分配.png
flink子任务分配2.png

flink 的执行步骤图

flink执行步骤图.png

数据传输形式

一个程序中,不同的算子可能具有不同的并行度
算子之间的传输数据的形式可以是 one-to-one (forwarding)的模式
也可以是 redistributing的模式,具体是哪一种形式,取决于算子的种类

one-to-one :

stream维护着分区以及元素的顺序(比如source 和map),着意味着map
算子的子任务生产的元素的个数以及顺序跟source算子的子任务生产的元素的个数 ,顺序相同。
map,fliter,flatMap 等算子都是 one-to-one的对应关系

redistributing:

stream的分区会发生改变。,每个算子的子任务依据所选择的transformation
发送数据到不同的目标任务。例如,keyBy基于hashCode 重分区,而broadcast 和 rebalance
会随机重新分区。这些算子都会引起redistribute过程,而redistribute过程
就类似于spark中的shuffle过程。

任务链

任务链0.png
任务链.png
上一篇 下一篇

猜你喜欢

热点阅读