大数据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博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨