其他分享
首页 > 其他分享> > flink的执行原理猜想

flink的执行原理猜想

作者:互联网

一,flink的架构,flink的组件和各自的作用

在这里插入图片描述

二,flink的基本概念

另一篇文章

三,作业的执行流程:作业提交、作业调度、作业执行

要想搞清楚我们开发的作业是怎么执行的,首先要把四张图(StreamGraph、JobGraph、ExecutionGraph、物理执行图)弄明白。

在这里插入图片描述

前三种图都是flink的数据结构,在源码中分别由三个类与之对应。物理执行图是对运行时作业的一种理解和抽象,在源码中并不存在与之对应的数据结构。

1,StreamGraph

clint将任务中使用的算子按照一定的规则组织成StreamGraph,从逻辑上不难理解,代码中使用的算子都被存储在一个list中,clint执行时会将list中的算子一一取出,按先后顺序连接起来,组成一个链式图。图由StreamNode和StreamEdge构成。

在这里插入图片描述

2,JobGraph

JobGraph是在客户端由StreamGraph转换而来。

在这里插入图片描述

JobGraph和StreamGraph都是简单的图结构。

3,ExecutionGraph

任务提交到集群后,JobManager根据JobGraph生成ExecutionGraph。

ExectionGraph是对JobGraph的展开,加入了并行度。

在这里插入图片描述

JobManager根据ExecutionGraph向resourceManager申请资源,此时作业所需要的资源已经确定。

JobManager遍历ExecutionGraph中的任务,将其分配到申请的资源,并记录和跟踪任务的执行

4,物理执行图

物理执行图和任务的执行没有关系,是为了理解任务的实际执行过程抽象出来的虚构图。
在这里插入图片描述

4,有状态的计算
5,checkpoint
6,水位线
7,端到端的一致性
8,内存管理

首先flink根据JobGraph生成ExecutionGraph,ExecutionGraph有并行度信息,每个task的并行度信息,在哪个taskslot上执行,下游算子的联系方式,输出数据的存放位置。 下游算子从指定的存储位置读取数据。

上游算子的数据如果需要重分区,则会根据重分区规则将数据发送到其他taskslot的指定位置。

标签:ExecutionGraph,猜想,StreamGraph,flink,JobGraph,算子,原理,执行,转换
来源: https://blog.csdn.net/epitomizelu/article/details/117572413