Flink ExecutionGraph核心对象

目录

ExectionGraph核心对象

1.ExecutionJobVertex

2.ExecutionVertex

3.IntermediateResult

4.IntermediateResultPartition

5.ExecutionEdge

6.Execution


前几篇文章分析了StreamGraphJobGraph。这篇文章分析JobGraph的下一步ExecutionGraph的核心对象

ExecutionGraph是调度Flink作业执行的核心数据结构,包含了作业中所有并行执行的Task信息、Task之间的关联关系、数据流转关系

StreamGraph、JobGraph在Flink客户端中生成,然后提交给Flink集群。JobGraph到ExecutionGraph的转换在JobMaster中完成,转换过程中的主要变化如下

扫描二维码关注公众号,回复: 17046276 查看本文章
  1. 加入并行度的概念,成为真正可调度的图结构

  2. 生成了与JobVertex对应的ExecutionJobVertex和ExecutionVertex,与IntermediateDataSet对应的IntermediateResult和IntermediateResultPartition等,并行将通过这些类实现

    ExecutionGraph示意图

ExecutionGraph已经可以用于调度任务,从上图可以看到Flink根据该图生成了一一对应的ExecutionVertex,每个Task对应一个ExecutionGraph的ExecutionVertex。Task用InputGate、InputChannel和ResultPartition对应了图中的IntermediateResult和ExecutionEdge

ExectionGraph核心对象

ExecutionGraph的核心对象有ExecutionJobVertex、ExecutionVertex、IntermediateResult、IntermediateResultPartition、ExecutionEdge和Execution

1.ExecutionJobVertex

该对象和JobGraph中的JobVertex一一对应,该对象还包含一组ExecutionVertex,数量与该JobVertex中包含的StreamNode的并行度一致,假设StreamNode的并行度为5,那么该ExecutionJobVertex中也会包含5个ExecutionVertex

ExecutionJobVertex用来将一个JobVertex封装成ExecutionJobVertex,并依次创建ExecutionVertex、Execution、IntermediateResult和IntermediateResultPartition,用于丰富ExecutionGraph

在ExecutionJobVertex的构造函数中,首先是依据对应的JobVertex的并发度,生成对应个数的ExecutionVertex。其中一个ExecutionVertex代表一个ExecutionJobVertex的并发子Task。然后是将原来JobVertex的中间结果IntermediateDataSet转化为ExecutionGraph中的IntermediateResult

2.ExecutionVertex

ExecutionJobVertex中会对作业进行并行化处理,构造可以并行执行的实例,每一个并行执行的实例就是ExecutionVetex

构造ExecutionVertex的同时,也会构建ExecutionVertex的输出IntermediateResult。并且将ExecutionEdge输出为IntermediateResultPartition

ExecutionVertex的构造函数中,首先会创建IntermediateResultPartition,并通过IntermediateResult.setPartition()建立IntermediateResult和IntermediateResultPartition之间的关系,然后生成Execution,并配置相关资源

3.IntermediateResult

IntermediateResult又叫作中间结果集,该对象是逻辑概念,表示ExecutionJobVertex的输出,和JobGraph中的IntermediateDataSet一一对应,同样,一个ExecutionJobVertex可以有多个中间结果,取决于当前JobVertex有几个出边(JobEdge)

一个中间结果集包含多个中间结果分区IntermediateResultPartition,其个数等于该JobVertex的并发度,或者叫做算子的并行度

4.IntermediateResultPartition

IntermediateResultPartition又叫作中间结果分区,表示1个ExecutionVertex输出结果,与ExecutionEdge相关联

5.ExecutionEdge

表示ExecutionVertex的输入,连接到上游产生的IntermediateResultPartition。一个Execution对应唯一的1个IntermediateResultPartition和1个ExecutionVertex。一个ExecutionVertex可以有多个ExecutionEdge

6.Execution

ExecutionVertex相当于每个Task的模板,在真正执行的时候,会将ExecutionVertex中的信息包装为1个Execution,执行一个ExecutionVertex的一次尝试。JobManager和TaskManager之间关于Task的部署和Task执行状态的更新都是通过ExecutionAttemptID来标识实例的。在发生故障或者数据需要重算的情况下,ExecutionVertex可能会有多个ExecutionAttempID。一个Execution通过ExecutionAttempID来唯一标识。

猜你喜欢

转载自blog.csdn.net/qq_24186017/article/details/127153010