Spark Standalone和Yarn工作模式

一.常用的参数

在这里插入图片描述
其中- -deploy-mode默认为client。

二.Standalone模式

  1. Standalone-client 模式提交任务

./spark-submit --master spark://node1:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi …/examples/jars/spark-examples_2.11-2.4.0.jar 100

在这种模式下,我们能够很清楚的在客户端看到 DriverWorker 的通信,因为此时 Driver 是运行在客户端的。
在这里插入图片描述

并且:
在这里插入图片描述
Standalone-client 模式会在客户端看到 task 的执行情况,当客户端提交多个 application 时都会启动自己的 driverdriver 与集群的 worker 有大量的通信,会造成客户端网卡流量激增的问题,这种模式适用于程序测试,不适用于生产环境。
2. Standalone-cluster 模式提交任务

./spark-submit --master spark://node1:7077 --deploy-mode cluster --class org.apache.spark.examples.SparkPi …/examples/jars/spark-examples_2.11-2.4.0.jar 100

在这里插入图片描述
在这里插入图片描述
Standalone-cluster模式driver会在集群的随机一台worker节点上启动。如果提交多个application,那么每个application的driver会分散到集群的worker节点,起到一个分担流量的作用。这种模式适用于生产模式。

三.Yarn模式

1.Yarn-client模式提交任务

./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi …/examples/jars/spark-examples_2.11-2.4.0.jar 100

在这里插入图片描述
在这里插入图片描述
与Standalone-client模式一样,会造成流量激增,适合做测试不适合生产。

下面是运行流程序列图:
在这里插入图片描述

2.Yarn-cluster模式提交任务

./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi …/examples/jars/spark-examples_2.11-2.4.0.jar 100
在这里插入图片描述
在这里插入图片描述

与Standalone-cluster模式一样,用集群分散网卡流量负担。

下面是运行流程序列图:
在这里插入图片描述

四.yarn-cluster和yarn-client提交模式的区别与总结

  1. ApplicationMaster的作用:
    当前的Application申请资源
    给nodemanager发送消息 启动Excutor。
    任务调度。(这里和client模式的区别是AM具有调度能力,因为其就是Driver端,包含Driver进程)
  2. 如果是yarn-cluster模式,spark-submit在提交的时候请求到ResourceManager,请求来启动ApplicationMaster,ResourceManager接收到请求后会分配一个container,在某个NodeManager上启动ApplicationMaster,ApplicationMaster(AM)启动后会反过来向ResourceManager进行通讯,其实这个ApplicationMaster就相当于是driver,AM找RM请求container,启动excutor,然后RM会分配一批container,用于启动executor,AM链接其他的NM,来启动executor,这里的NM相当于worker,executor向AM反向注册。ResourceManager相当于之前的master。
  3. yarn-client模式,spark-submit在提交的时候发送给RM,请求启动AM,分配一个container,在某个NM上,启动AM,但是这里的AM只是一个ExecutorLauncher,功能是很有限的。AM启动后会找RM申请container,启动executor,AM链接其他的NM,用container的资源来启动executor。executor会反向注册到本地的driver上。
  4. 区别:yarn-cluster不会产生某一台机器网卡流量激增的现象,缺点是任务提交后不能看到日志。yarn-cluster的driver相当于就是在NodeManager上的某一个ApplicationMaster;yarn-client的driver还是在本地启动的一个进程,在NodeManager启动的ApplicationMaster只是一个ExecutorLauncher,ExecutorLauncher只会向ResourceManager申请资源,然后用container资源去链接其他的NodeManager,然后去启动executor,executor启动后会反向注册到提交应用程序的本地客户端的driver进程上,通过本地客户端的driver进程里面的DAGScheduler、TaskScheduler会大量进行task的调度,发送到NodeManager上的executor上去执行。

参考:https://www.jianshu.com/p/6b796a5c3e80
https://blog.csdn.net/huojiao2006/article/details/80563112

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值