Spark中Standalone的两种提交模式

Spark中Standalone有两种提交模式,一个是Standalone-client模式,一个是Standalone-cluster模式。


1.Standalone-client提交任务方式


提交命令

./spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

或者

./spark-submit --master spark://node01:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100


解释:–class org.apache.spark.examples.SparkPi 是main函数

执行流程

1.集群启动,worker向master汇报情况,master掌握了worker的工作情况;
2.client模式提交任务后,会在客户端启动Driver进程;Driver会向Master申请启动Application启动的资源。
3.资源申请成功,Driver端将task发送到worker端执行。
4.worker将task执行结果返回到Driver端。(由代码设置)

总结

    client模式适用于测试调试程序。Driver进程是在客户端启动的,这里的客户端就是指提交应用程序的当前节点。在Driver端可以看到task执行的情况。 

    生产环境下不能使用client模式,是因为:假设要提交100个application到集群运行,Driver每次都会在client端启动,那么就会导致客户端100次网卡流量暴增的问题。(因为要监控task的运行情况,会占用很多端口,如上图的结果图)客户端网卡通信,都被task监控信息占用。

Client端作用

1.任务的分发。
2.结果的回收。(可能)
3.监控task执行情况。
4.任务的重试


2.Standalone-cluster提交任务方式


提交命令

./spark-submit  --master spark://node01:7077  --deploy-mode cluster --class org.apache.spark.examples.SparkPi  ../lib/spark-examples-1.6.0-hadoop2.6.0.jar  100

1.当在客户端提交多个application时,Driver会在Woker节点上随机启动,这种模式会将单节点的网卡流量激增问题分散到集群中。在客户端看不到task执行情况和结果。要去webui中看。
2.cluster模式适用于生产环境
3.Master模式先启动Driver,再启动Application。
注意:Standalone-cluster提交方式,应用程序使用的所有jar包和文件,必须保证所有的worker节点都要有,因为此种方式,spark不会自动上传包。


解决办法:

将所有的依赖包和文件打到同一个包中,然后放在hdfs上。
将所有的依赖包和文件各放一份在worker节点上。

 

执行流程

1.集群启动,worker向master汇报工作情况,master掌握集群资源;

2.客户端使用命令spark-submit --deploy-mode cluster 后会启动spark-submit进程
3.此进程为Driver向Master申请资源,Driver进程默认需要1G内存和1Core
4.Master会随机在一台worker节点来启动Driver进程
5.Driver启动成功后,spark-submit关闭,然后Driver向Master申请资源
6.Master接收到请求后,会在资源充足的worker节点上启动Executor进程
7.Driver分发Task到Executor中执行


总结

1.当在客户端提交多个application时,Driver会在Woker节点上随机启动,这种模式会将单节点的网卡流量激增问题分散到集群中。在客户端看不到task执行情况和结果。要去webui中看。
2.cluster模式适用于生产环境
3.Master模式先启动Driver,再启动Application。


须知


spark shell 模式是以client提交的(第一种),所以不能加入--deploy-mode cluster的(第二种) client方式用于测试环境,用于方便查看结果,因为 spark shell 模式以client方式提交,所以 spark shell 模式不支持--deploy-mode cluster提交


使用StandAlone集群的话:

1.不需要开启HDFS,但保证需要执行的Application的包,每个节点都有
2.都需要spark的包
3.不能开启yarn集群


yarn和Stand alone都是资源管理的,同时开启会造成资源隔离和资源抢夺
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值