flink笔记:027 作业图(JobGraph)与执行图(ExecutionGraph)

flink执行图的划分

由 Flink 程序直接映射成的数据流图(dataflow graph),也被称为逻辑流图(logical StreamGraph),因为它们表示的是计算逻辑的高级视图。到具体执行环节时,我们还要考虑并行子任务的分配、数据在任务间的传输,以及合并算子链的优化。为了说明最终应该怎样执行一个流处理程序,Flink 需要将逻辑流图进行解析,转换为物理数据流图。
在这个转换过程中,有几个不同的阶段,会生成不同层级的图,其中最重要的就是作业图(JobGraph)和执行图(ExecutionGraph)。

Flink 中任务调度执行的图,按照生成顺序可以分成
四层:逻辑流图(StreamGraph)→ 作业图(JobGraph)→ 执行图(ExecutionGraph)→ 物理图(Physical Graph)。
四层调度的演变过程

逻辑流图(StreamGraph)

这是根据用户通过DataStreamAPI编写的代码生成的最初的DAG图,用来表示程序的拓扑结构。这一步一般在客户端完成。

作业图(JobGraph)

StreamGraph经过优化后生成的就是作业图(JobGraph),这是提交给JobManager 的数据结构,确定了当前作业中所有任务的划分。
主要的优化为: 将多个符合条件的节点链接在一起合并成一个任务节点,形成算子链,这样可以减少数据交换的消耗。JobGraph一般也是在客户端生成的,在作业提交时传递给JobMaster。

在这里插入图片描述

执行图(ExecutionGraph)

JobMaster收到JobGraph后,会根据它来生成执行图(ExecutionGraph)。ExecutionGraph 是JobGraph的并行化版本,是调度层最核心的数据结构。

在这里插入图片描述

物理图(Physical Graph)

JobMaster 生成执行图后, 会将它分发给 TaskManager;各个 TaskManager 会根据执行图
部署任务,最终的物理执行过程也会形成一张“图”,一般就叫作物理图(Physical Graph)。
这只是具体执行层面的图,并不是一个具体的数据结构。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43015677/article/details/129913481
今日推荐