简介
Flink在提交并执行任务时,首先会生成执行计划,依次生成StreamGraph、JobGraph、 ExecutionGraph、物理执行图。其中StreamGraph和JobGraph是在client端生成的,ExecutionGraph是在JobMaster中执行的,JobMaster根据 JobGraph 生成ExecutionGraph。方便调度和监控和跟踪各个 tasks 的状态。ExecutionGraph是JobGraph的并行化版本,是调度层最核心的数据结构,本文将详细介绍这些Graph的功能以及生成流程,方便大家对Flink内部执行流程有一个清晰的全局认识。
StreamGraph、JobGraph、ExecutionGraph的功能
1.StreamGraph
根据用户代码生成的最原始执行图,StreamGraph其实就是由用户代码中涉及到transformations转换来的,它包含两个重要元素,StreamNode和StreamEdge。StreamGraph的生成发生在用户调用了env.execute() 方法之后,而在这之前,用户编写的应用程序会转换成一个包含了Transformation的集合,SteamEdge用来表示transfor