Spark任务提交流程

1. yarn-client

在这里插入图片描述

  1. Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯,申请启动ApplicationMaster;

  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher(加载器),只负责向ResourceManager申请Executor内存;

  3. ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程;

  4. Executor进程启动后向ResourceManager发送心跳,向Driver反向注册,Executor全部注册完成后,Driver开始执行main函数

  5. 之后执行到action算子时,触发一个job,并根据宽依赖开始划分Stage,每个stage生成对应的TaskSet,之后将Task分发到各个Executor上执行,执行完毕释放资源。

以运行词频统计WordCount为例,提交命令如下:

[xiaokang@hadoop01 ~]$ /opt/software/spark-3.0.1/bin/spark-submit\
--master yarn \ #运行yarn
--deploy-mode client \ #部署模式client
--driver-memory 512m \ #为driver分配的内存大小
--executor-memory 512m \ #每个executor的内存大小
--executor-cores 1 \ #每个executor 1核
--num-executors 2 \ #集群的executor个数
--queue default \
--class cn.itcast.spark.start.SparkSubmit \ 
hdfs://node01:8020/spark/apps/spark-day02_2.11-1.0.0.jar \
/datas/wordcount.data \
/datas/swcy-client

2. yarn-cluster

在这里插入图片描述

  1. 任务提交后会和ResourceManager通讯,申请启动ApplicationMaster;

  2. 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver;

  3. Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动Executor进程;

  4. Executor进程启动后会向ResourceManager发送心跳,向Driver反向注册;

  5. Executor全部注册完成后,Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

以运行词频统计WordCount为例,提交命令如下:

[xiaokang@hadoop01 ~]$ /opt/software/spark-3.0.1/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-momery 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
--class cn.itcast.spark.start.SparkSubmit \ 
hdfs://node01:8020/spark/apps/spark-day02_2.11-1.0.0.jar \
/datas/wordcount.data \ 
/datas/swcy-cluster

3. YARN-client与YARN-cluster的不同之处

  1. YARN-client模式,Driver运行在本地机器上;
    YARN-cluster模式,Driver运行在YARN集群的某个NodeManager节点上;

  2. YARN-client模式会导致本地机器负责Spark任务的调度,所以网卡流量会激增;
    YARN-cluster模式没有流量激增的问题;

  3. YARN-client的Driver运行在本地,通常来说本地机器和YARN集群不在同一个机房,所以说性能不会很好;
    YARN-cluster模式下,Driver和YARN集群运你在同一个机房内,性能上来说会好一点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘新鲜事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值