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模式任务提交流程源码分析的更多相关文章

  1. mapreduce job提交流程源码级分析(三)

    mapreduce job提交流程源码级分析(二)(原创)这篇文章说到了jobSubmitClient.submitJob(jobId, submitJobDir.toString(), jobCop ...

  2. Spark(五十一):Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二)

    上篇<Spark(四十九):Spark On YARN启动流程源码分析(一)>我们讲到启动SparkContext初始化,ApplicationMaster启动资源中,讲解的内容明显不完整 ...

  3. MapReduce之Job提交流程源码和切片源码分析

    hadoop2.7.2 MapReduce Job提交源码及切片源码分析 首先从waitForCompletion函数进入 boolean result = job.waitForCompletion ...

  4. mapreduce job提交流程源码级分析(一)(原创)

    首先,在自己写的MR程序中通过org.apache.hadoop.mapreduce.Job来创建Job.配置好之后通过waitForCompletion方法来提交Job并打印MR执行过程的log.H ...

  5. mapreduce job提交流程源码级分析(二)(原创)

    上一小节(http://www.cnblogs.com/lxf20061900/p/3643581.html)讲到Job. submit()方法中的: info = jobClient.submitJ ...

  6. Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二)

    转自:https://www.cnblogs.com/yy3b2007com/p/11087180.html 本章将针对yarn-cluster(--master yarn –deploy-mode ...

  7. Spark(四十九):Spark On YARN启动流程源码分析(一)

    引导: 该篇章主要讲解执行spark-submit.sh提交到将任务提交给Yarn阶段代码分析. spark-submit的入口函数 一般提交一个spark作业的方式采用spark-submit来提交 ...

  8. [Android]从Launcher开始启动App流程源码分析

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5017056.html 从Launcher开始启动App流程源码 ...

  9. 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析

    提示:本文的所有图片如果不清晰,请在浏览器的新建标签中打开或保存到本地打开 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 ...

随机推荐

  1. Android BottomNavigationView的用法

    BottomNavigationView是相当于一个导航的标签,但是它的形式就是像QQ,微信之类的界面 这三个图标就是BottomNavigationView的体现. 至于写出后怎样绑定这三个界面,就 ...

  2. 用 Python 了解一下最炫国漫《雾山五行》

    看动漫的小伙伴应该知道最近出了一部神漫<雾山五行>,其以极具特色的水墨画风和超燃的打斗场面广受好评,首集播出不到 24 小时登顶 B 站热搜第一,豆瓣开分 9.5,火爆程度可见一斑,就打斗 ...

  3. 18、Java中的 数据结构

    Java2中引入了新的数据结构 集合框架 Collection,下一节再谈论(非常重要,面试也常问). 1.枚举 (Enumeration) 1.1 Enumeration 源码: public in ...

  4. C#设计模式之2-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/391 ...

  5. C#算法设计排序篇之03-直接插入排序(附带动画演示程序)

    直接插入排序(Straight Insertion Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/679 访 ...

  6. Android app启动出现白屏闪屏

    出现白屏闪屏原因: 进入到AppStartActivity,但是未加载到布局文件,就先显示了窗口的背景,白屏就是显示的windows的背景,即所设置的theme. onCreate()中的setCon ...

  7. Jmeter 常用函数(16)- 详解 __split

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 根据分隔符分割传递给它的字符串 语法格式 ...

  8. python 倒序遍历数组

    num = [,,,,,,,,] for i in range(, num.__len__())[::-]: print num[i]

  9. golang 判断IPv4 or IPv6 address

    import strings func IsIPv4(address string) bool { return strings.Count(address, ":") < ...

  10. 获取元素top值,屏幕滚动到当前元素

    var top = $(this).offset().top; $('html , body').animate({scrollTop: top-100},10);