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

2.运行SparkSubmit类的main方法

3.调用doSubmit方法

4.调用submit方法
在submit方法里调用doRunMain方法,最终调用runMain方法

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

在这里根据提交模式来选择mainClass

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

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

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

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

这里通过createContainerLaunchContext方法启动了ApplicationMaster

10.调用ApplicationMaster类的main方法
在这里首先new一个ApplicationMaster,然后调用了master的run方法

11.调用ApplicationMaster的run方法
这里会根据是否是集群模式执行不同的方法

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

12.2将AM注册到RM

12.3分配资源



这里通过调用runAllocatedContainers方法在分配的container里面运行executors

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


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

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

14.调用setupEndpoint创建executor终端


15.反向注册executor到driver



16.driver端接收
在SparkContext中有SchedulerBackend,它是一个特质,具体实现类为CoarseGrainedSchedulerBackend,该类中有一个receiveAndReply方法来对executor的注册做回复

Spark3.0YarnCluster模式任务提交流程源码分析的更多相关文章
- mapreduce job提交流程源码级分析(三)
		
mapreduce job提交流程源码级分析(二)(原创)这篇文章说到了jobSubmitClient.submitJob(jobId, submitJobDir.toString(), jobCop ...
 - Spark(五十一):Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二)
		
上篇<Spark(四十九):Spark On YARN启动流程源码分析(一)>我们讲到启动SparkContext初始化,ApplicationMaster启动资源中,讲解的内容明显不完整 ...
 - MapReduce之Job提交流程源码和切片源码分析
		
hadoop2.7.2 MapReduce Job提交源码及切片源码分析 首先从waitForCompletion函数进入 boolean result = job.waitForCompletion ...
 - mapreduce job提交流程源码级分析(一)(原创)
		
首先,在自己写的MR程序中通过org.apache.hadoop.mapreduce.Job来创建Job.配置好之后通过waitForCompletion方法来提交Job并打印MR执行过程的log.H ...
 - mapreduce job提交流程源码级分析(二)(原创)
		
上一小节(http://www.cnblogs.com/lxf20061900/p/3643581.html)讲到Job. submit()方法中的: info = jobClient.submitJ ...
 - Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二)
		
转自:https://www.cnblogs.com/yy3b2007com/p/11087180.html 本章将针对yarn-cluster(--master yarn –deploy-mode ...
 - Spark(四十九):Spark On YARN启动流程源码分析(一)
		
引导: 该篇章主要讲解执行spark-submit.sh提交到将任务提交给Yarn阶段代码分析. spark-submit的入口函数 一般提交一个spark作业的方式采用spark-submit来提交 ...
 - [Android]从Launcher开始启动App流程源码分析
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5017056.html 从Launcher开始启动App流程源码 ...
 - 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析
		
提示:本文的所有图片如果不清晰,请在浏览器的新建标签中打开或保存到本地打开 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 ...
 
随机推荐
- Spring JdbcTemplate中关于RowMapper的使用实例
			
在spring boot 集成使用jdbctemplate,首先在pom文件中引入相应的依赖 <dependency> <groupId>org.springframework ...
 - js 排他思想案例
			
<!-- 排他思想 --> <button>按钮1</button> <button>按钮2</button> <button> ...
 - 狄利克雷卷积 & 莫比乌斯反演
			
积性函数与完全积性函数 积性函数 若一个数论函数\(f\)满足当\(gcd(n,m)=1\)时,\(f(nm)=f(n)f(m)\) 则称\(f\)为积性函数 一些常见的积性函数 完全积性函数 若一个 ...
 - PB级大规模Elasticsearch集群运维与调优实践
			
导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与 ...
 - 总结笔记 | 深度学习之Pytorch入门教程
			
笔记作者:王博Kings 目录 一.整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二.Pytorch与TensorFlow概述 ...
 - NMS系列
			
NMS soft NMS softer NMS https://www.cnblogs.com/VincentLee/p/12579756.html
 - java多线程(三):多线程单例模式,双重检查,volatile关键字
			
一.事先准备 首先准备一个运行用的代码: public class Singleton { public static void main(String[] args) { Thread[] thre ...
 - eclipse中启动tomcat出现错误的解决方法
			
前段时间跟着老师做课设,各方面调试都没有问题.近段时间想起来,看看之前写过的代码,翻着翻着就发现启动tomcat出现了错误 错误如下: 错误原因:tomcat路径配置有问题,之前可能配置好了然后由于种 ...
 - PMP各种图比较记忆
			
1.控制图:监控过程是否稳定,是否具有可预测的绩效,在问题还未发生时解决.需要关注控制图中的平均值.控制界限.规格界限的含义.控制上.下限一般设为±3个西格玛.过程失控的情况包括数据点在控制界限外,以 ...
 - C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?
			
C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/963 访问. 这里给出常见的7种方法,仅供大家参考,部 ...