当前位置: 首页 > news >正文

大数据Spark(六十二):Spark基于Yarn提交任务流程

文章目录

Spark基于Yarn提交任务流程

一、Yarn-Client模式

1、提交命令

2、任务执行流程

二、Yarn-Cluster模式

1、提交命令

2、任务执行流程


Spark基于Yarn提交任务流程

在Yarn模式下,Spark的任务提交同样根据Driver程序运行的位置不同,分为client和cluster两种模式。以下分别介绍这两种模式。

一、Yarn-Client模式

1、提交命令

在启动Yarn集群后,可在node5节点上执行以下命令以Client模式提交任务:

[root@node5 ~]# cd /software/spark-3.5.5/bin/
#第一种方式
[root@node5 bin]# ./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000#第二种方式
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000

以上命令中注意如下几点:

  • “--master”参数指定Applicatin的Master URL,即运行模式;“--deploy-mode”参数指定Driver程序的部署模式,可选Client/Cluster,默认为Client;“--class”参数指定Application的主类。
  • 以上两种提交方式命令主要在于是否指定参数“--deploy-mode”,该值默认为Client,也可以不指定。
  • 任务提交后,可以在客户端看到“SparkSubmit”进程,该进程可以看做为Driver进程;在Yarn集群NodeManager节点可以看到“ExecutorLauncher”和“CoarseGrainedExecutorBackend”进程(Executor进程),ExecutorLauncher实际可以看做AM(内部调用AM的main方法),负责申请资源和启动Executor,CoarseGrainedExecutorBackend负责执行Task。

2、任务执行流程

Yarn Client模式提交任务流程如下图所示:

  • Yarn集群启动,NodeManager(NM)向ResourceManager(RM)汇报资源,RM掌握集群资源。

  • 客户端提交Application程序,在客户端启动 Driver 进程。

  • Driver 向 RM申请启动 ExecutorLauncher(AM)。

  • RM收到请求,随机选择一台NM启动ExecutorLauncher(EL)。

  • EL 启动后,向 RM申请启动 Executor 所需的资源(Container)。

  • RM分配资源,EL在相应的 NM上启动 Executor。

  • Executor 启动后,会向Driver注册,Driver将task发送到Executor,Task执行情况和结果会返回给 Driver 。

总结:在Yarn-Client模式中,Driver进程在提交Application的客户端节点上运行,客户端可以直接查看Task的执行情况和结果。由于Driver与集群中的Executor需要频繁通信,如果在客户端提交大量Application,可能会导致客户端的网络负载过高。因此,该模式适用于测试环境,不建议在生产环境中使用。

二、Yarn-Cluster模式

1、提交命令

启动Yarn集群后,在node5节点上执行如下命令以Yarn Cluster模式提交任务:

[root@node5 ~]# cd /software/spark-3.5.5/bin/
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000

以上命令中注意如下几点:

  • “--master”参数指定Applicatin的Master URL,即运行模式;“--deploy-mode”参数指定Driver程序的部署模式,可选Client/Cluster,默认为Client;“--class”参数指定Application的主类。
  • 任务提交后,可以在NodeManager节点上看到”ApplicationMaster”和“YarnCoarseGrainedExecutorBackend”进程,ApplicationMaster负责为当前Application申请资源、启动Executor、调度Task;“YarnCoarseGrainedExecutorBackend”负责task执行。
  • Yarn-Cluster模式提交任务后,在客户端看不到任务结果,需要通过Yarn WebUI查看日志,查看结果。查看日志时,需要启动Yarn历史日志服务(命令:mapred --daemon start historyserver)。

2、任务执行流程

Yarn Cluster模式提交任务流程如下图所示:

  • Yarn集群启动,NodeManager(NM)向ResourceManager(RM)汇报资源,RM掌握集群资源。

  • 客户端提交Application应用程序,向 RM请求启动 ApplicationMaster(AM)。

  • RM随机在某个NM上启动 AM(此时,AM相当于Driver端)。

  • AM 启动后,向 RM申请启动 Executor 所需的资源(请求一批Container)。

  • RM分配资源,AM 在相应的 NM上启动 Executor。

  • Executor 启动后,向 AM(Driver)注册,AM发送task给Executor并监控task执行,结果返回给AM。

总结:在Yarn-Cluster模式中,ApplicationMaster(AM)相当于Driver进程,运行在集群中的某个NodeManager上。由于Driver进程在集群内部运行,客户端提交任务后无法直接查看Task的执行结果,需要通过集群的Web UI查看。这种模式适合生产环境,因为每个Application的Driver进程会随机在集群中的某个NodeManager上启动,避免了在客户端模式下可能出现的网络负载集中问题。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
http://www.dtcms.com/a/269266.html

相关文章:

  • C++内存泄漏排查
  • 施密特触发器Multisim电路仿真——硬件工程师笔记
  • 暑假读书笔记第三天
  • Linux信号处理全解析
  • Qt中的QProcess类
  • 【学习笔记】大数定理,频率与概率,均值与期望的区别
  • MySQL数据表设计 系统的营销功能 优惠券、客户使用优惠券的设计
  • 2025Q2大模型更新汇总(大语言模型篇)
  • Web后端开发-分层解耦
  • 【Java面试】如何保证接口的幂等性?
  • Day06_刷题niuke20250707
  • pythone相关内容一
  • Spring 如何干预 Bean 的生命周期?
  • 洛谷 P5788 【模板】单调栈
  • 龙旗科技社招校招入职测评25年北森笔试测评题库答题攻略
  • 人工智能-基础篇-22-什么是智能体Agent?(具备主动执行和调优的人工智能产物)
  • elementUI vue2 前端表格table数据导出(二)
  • 超光谱相机的原理和应用场景
  • Java后端技术博客汇总文档
  • C语言——编译与链接
  • Dash 代码API文档管理工具 Mac电脑
  • JVM基础01(从入门到八股-黑马篇)
  • 力扣网编程274题:H指数之普通解法(中等)
  • ExcelJS 完全指南:专业级Excel导出解决方案
  • Web前端——css样式(盒子模型)
  • R语言爬虫实战:如何爬取分页链接并批量保存
  • Docker 稳定运行与存储优化全攻略(含可视化指南)
  • 田间杂草分割实例
  • 【PTA数据结构 | C语言版】求数组与整数乘积的最大值
  • OpenWebUI(2)源码学习-后端retrieval检索模块