十四、Flink源码阅读--JobGraph生成过程

上篇分析了client整个提交任务过程,最终提交的是一个JobGraph对象,那么是如何从jar或sql 任务转为JobGraph的呢,这篇我们仔细研究一下, 版本为1.6.3

源码分析

上篇我们介绍client端提交任务最终会到到 ClusterClient.run()方法,就在这个方法中封装了JobGraph的步骤。

public JobSubmissionResult run(FlinkPlan compiledPlan,
	List libraries, List classpaths, ClassLoader classLoader, SavepointRestoreSettings savepointSettings)
		throws ProgramInvocationException {
	JobGraph job = getJobGraph(flinkConfig, compiledPlan, libraries, classpaths, savepointSettings);
	return submitJob(job, classLoader);
}

接着进入getJobGraph方法,这里有2种生成方式

JobGraph job;
if (optPlan instanceof StreamingPlan) {//stream任务,这里的optPlan其实就是StreamGraph
	job = ((StreamingPlan) optPlan).getJobGraph();
	job.setSavepointRestoreSettings(savepointSettings);
} else {//其他任务,没有streamGraph
	JobGraphGenerator gen = new JobGraphGenerator(flinkConfig

你可能感兴趣的:(Apache,Flink,Flink,JobGraph生成源码分析)