Flink 1.9源码学习05 ----Job启动JobManager端源码分析

Driver将用户代码转换成streamGraph再转换成Jobgraph后向Jobmanager端提交

JobManager启动以后会在Dispatcher.java起来RPC方法submitJob(jobGraph),用于接收来自Driver转化得到的JobGraph来启动任务

具体来看jobGraph提交到JobManager的submitJob方法

package org.apache.flink.runtime.dispatcher 

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

--- >>>

点进去查看这个方法:

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

进入这个方法

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

 运行job:Flink 1.9源码学习05 ----Job启动JobManager端源码分析

并且创建了 jobmanagerRunner,将jobGraph 变成了  executionGraph 

Flink 1.9源码学习05 ----Job启动JobManager端源码分析 然后接着启动 jobManagerRunner:

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

 

同时通过创建jobManagerRunner的同时它调用了:


这里主要是为了创建一个jobMaster,在jobMaster的构造方法中:

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

在这里它先是create传入了jobgraph然后又通过createAndRestoreExecutionGraph()方法转换得到executionGraph

这个executionGraph就可以用来调度启动任务了

具体看一下他的转化逻辑

Flink 1.9源码学习05 ----Job启动JobManager端源码分析

 

在这里做了转换得到ExecutionGraph,

可以看到它从createExecutionGraph方法中得到了executionGraph

并且通过getCheckpointCoordinator()方法得到了一个coordinator(主要是用于周期性触发checkpoint,调用对应TaskManager的rpc生成barriers往下游发送)

继续看一下他的转化逻辑

在createExecutionGraph中通过ExecutionGraphBuilder.buildGraph()返回了一个executionGraph

 

Flink 1.9源码学习05 ----Job启动JobManager端源码分析