大数据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上启动,避免了在客户端模式下可能出现的网络负载集中问题。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lansonli

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

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

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

打赏作者

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

抵扣说明:

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

余额充值