spark08-spark任务启动环境准备

内容来自尚硅谷

1.submitApplication

当spark执行任务时会启动java虚拟机,启动一个进程,该进程的名称为SparkSubmit,会执行SparkSubmit中的main方法,该方法中调用了super.doSubmit方法。

org.apache.spark.deploy.SparkSubmit

doSubmit方法中首先会解析参数调用parseArguments(args)方法,创建参数构建对象new SparkSubmitArguments(args),根据参数中action类型进行执行,如果是submit就是提交任务

2.启动ApplicationMaster

submit方法底层会执行runMain(args, uninitLog),该方法中会调用prepareSubmitEnvironment(args)方法(准备任务提交的环境)

如果是yarn模型,childMainClass=org.apache.spark.deploy.yarn.YarnClusterApplication

YarnClusterApplication执行start方法会new一个client对象

client对象中包含yarnClient对象,底层会生成resouceManager对象

client.run 会调用submitApplication方法,该方法会封装一些执行的指令

该方法中会创建application对象,指定container

当是集群模式是会创建master对象(进程),随后执行run方法,启动Driver

3.启动Driver ,初始化sparkContext

runDriver中会启动一个线程名字为Driver,并执行提交代码的main方法,执行代码中的new sparkContext(conf)代码

4.注册AM,与resouceManage连接申请资源

5.注册AM时会获取资源可用服务器链表

处理可使用的服务器

运行已分配服务器

6.启动exceutor通信进程

启动executor线程

执行启动container方法

startContainer首先会封装命令,该命令会启动一个进程(org.apache.spark.executor.YarnCoarseGrainedExecutorBackend executor的通信进程

向指定的服务器启动container

创建executorBackend会执行其中的run方法

创建SparkEnv环境

7.executor向driver进行注册

onStart方法执行的是CoarseGrainedExecutorBackend中的onStart方法

当向driver进行注册时,其实是向SparkContext环境进行注册,SparkContext中会有一个对象

服务器端进行接收和回复

8.executor注册成功

当服务器接收并回复之后,executor会给自己发送消息注册成功

CoarseGrainedExecutorBackend中的onStart方法

9.创建executor计算对象

executor当接收到消息后创建executor

10.执行代码

总体

1)执行脚本提交任务,实际是启动一个 SparkSubmit 的 JVM 进程;

2)SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法YarnClusterApplication创建Yarn客户端然后向Yarn服务器发送执行指令: bin/java

ApplicationMaster;Yarn框架收到指令后会在指定的 NM 中启动 ApplicationMaster;

3)ApplicationMaster 启动 Driver 线程,用于执行用户的作业,会创建SparkContext对象,

4)AM中SparkContext对象 向 RM 注册,申请资源;

5) 获取服务器可用列表

6) 获取资源后 AM 向 NM 发送指令: bin/java YarnCoarseGrainedExecutorBackend;

7) CoarseGrainedExecutorBackend 进程会接收消息,跟 Driver 通信

8) 注册已经启动的Executor;

9) sparkContext会解析Application代码,构建DAG图并提交给DAG Scheduler分解成Stage,

stage会提交到Task Scheduler,Task Scheduler负责将Task分配到相应的Worker

8) 然后启动计算对象 Executor 等待接收任务

10) Driver 线程继续执行完成作业的调度和任务的执行。

11) Driver 分配任务并监控任务的执行。

12) 所有Task完成后,SparkContext向Master注销,释放资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值