Spark基础06-Spark client和cluster提交流程

0、前言

我们先来看一下,spark提交任务的脚本,这里的deploy-mode就是本篇文章的重点,表示着提交模式,分别只有client客户端模式cluster集群模式

spark-submit 
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples.jar \

1、通用的提交流程

  1. 启动Driver进程,并向集群管理器注册应用程序
  2. 集群资源管理器根据任务配置文件分配并启动Executor
  3. Executor启动之后反向到Driver注册,Driver已经获取足够资源可以运行
  4. Driver开始执行main函数,Spark查询为懒执行,当执行到action算子时开始反向推算,根据宽依赖进行stage的划分,随后每一个stage对应一个taskset,taskset中有多个task,根据本地化原则,task会被分发到指定的Executor去执行
  5. 【一个stage的所有task都执行完毕之后,会在各个节点本地的磁盘文件中写入计算中间结果,然后Driver就会调度运行下一个stage。下一个stage的task的输入数据就是上一个stage输出的中间结果】
  6. Executor在执行期间会不断向Driver进行通信,汇报任务运行情况

2、client提交流程

  1. Driver在任务提交的本地机器运行,并向Master(资源管理器)注册应用程序
  2. Master根据submit脚本的资源配置,启用相应的Worker
  3. 在Worker(节点)上启动所有的Executor,Executor反向到Driver注册
  4. Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行

client提交

  • 从上图可知,driver进程是启动在提交任务的client机器上

3、cluster提交流程

  1. 任务提交后,Master(资源管理器)会找到一个Worker(节点)启动Driver进程,Driver启动后向Master注册应用程序
  2. Master根据submit脚本的资源配置,启用相应的Worker
  3. 在Worker上启动所有的Executor,Executor反向到Driver注册
  4. Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行

cluster提交

  • 从上图可知,driver进程是启动在资源集群的节点上

4、总结

  • deploy-mode的client与cluster模式的区别就在于:driver进程启动的位置,如果是在本地机器上则是client,在集群节点上则是cluster
  • 上图中的资源管理、资源节点,可以对应到Spark自带的Master-Worker主从模式,也可以对应到yarn、mesos等资源管理器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值