• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Spark3.0YarnCluster模式任务提交流程源码分析

开发技术 开发技术 3周前 (09-06) 20次浏览

1.通过spark-submit脚本提交spark程序

spark-submit脚本里面执行了SparkSubmit类的main方法
Spark3.0YarnCluster模式任务提交流程源码分析

2.运行SparkSubmit类的main方法

Spark3.0YarnCluster模式任务提交流程源码分析

3.调用doSubmit方法

Spark3.0YarnCluster模式任务提交流程源码分析

4.调用submit方法

在submit方法里调用doRunMain方法,最终调用runMain方法
Spark3.0YarnCluster模式任务提交流程源码分析

5.在runMain方法里面获取mainClass,再去执行start方法

Spark3.0YarnCluster模式任务提交流程源码分析

在这里根据提交模式来选择mainClass
Spark3.0YarnCluster模式任务提交流程源码分析

6.在start方法里面去调用YarnClusterApplication的start方法

Spark3.0YarnCluster模式任务提交流程源码分析

7.YarnClusterApplication方法里面new一个yarnClient对象,并执行run方法

Spark3.0YarnCluster模式任务提交流程源码分析

8.run方法里执行submitApplication提交application

Spark3.0YarnCluster模式任务提交流程源码分析

9.submitApplication方法里首先会去请求RM并返回一个appId,然后创建container和application上下文环境并执行submitApplication提交application

Spark3.0YarnCluster模式任务提交流程源码分析

这里通过createContainerLaunchContext方法启动了ApplicationMaster
Spark3.0YarnCluster模式任务提交流程源码分析

10.调用ApplicationMaster类的main方法

在这里首先new一个ApplicationMaster,然后调用了master的run方法
Spark3.0YarnCluster模式任务提交流程源码分析

11.调用ApplicationMaster的run方法

这里会根据是否是集群模式执行不同的方法
Spark3.0YarnCluster模式任务提交流程源码分析

12.调用runDriver方法

12.1调用startUserApplication方法启动一个driver线程

Spark3.0YarnCluster模式任务提交流程源码分析

12.2将AM注册到RM

Spark3.0YarnCluster模式任务提交流程源码分析

12.3分配资源

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

这里通过调用runAllocatedContainers方法在分配的container里面运行executors
Spark3.0YarnCluster模式任务提交流程源码分析

12.4调用ExecutorRunnable的run方法,然后调用run方法里面的startContainer方法来启动executor

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

12.5调用prepareCommand方法来运行org.apache.spark.executor.YarnCoarseGrainedExecutorBackend类

Spark3.0YarnCluster模式任务提交流程源码分析

13.执行YarnCoarseGrainedExecutorBackend类main方法的run方法创建executor终端

Spark3.0YarnCluster模式任务提交流程源码分析

14.调用setupEndpoint创建executor终端

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

15.反向注册executor到driver

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

Spark3.0YarnCluster模式任务提交流程源码分析

16.driver端接收

在SparkContext中有SchedulerBackend,它是一个特质,具体实现类为CoarseGrainedSchedulerBackend,该类中有一个receiveAndReply方法来对executor的注册做回复
Spark3.0YarnCluster模式任务提交流程源码分析


喜欢 (0)