【Spark】spark执行模式

 

一、standalone模式

1.standalone下的client模式

./spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.2.1.jar 1000
或者
./spark-submit --master spark://node1:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.2.1.jar 1000

执行原理图:

client:执行任务的节点

application:spark代码

①Worker节点和Master节点是会进行通信的,Worker会把资源信息反馈给Master

②client端提交application,client端会启动driver,来进行任务调度。

③driver会向Master申请用于执行application的资源

④申请到资源以后,driver会把task任务发送到Worker端执行

⑤worker端会将执行情况和结果返回给driver

缺点:存在流量激增问题,比如说一个节点上要执行好几千个application,那么这个节点上就会有几千个driver,就会导致客户端所在的节点上存在网卡流量暴增的问题。所以这个模式一般只用于测试

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.2.1.jar 100

注意:

Standalone-cluster提交方式,应用程序使用的所有jar包和文件,必须保证所有的worker节点都要有,因为此种方式,spark不会自动上传包

解决方式:

(1)将所有的依赖包和文件打到同一个包中,然后放在hdfs上。

(2)将所有的依赖包和文件各放一份在worker节点上

执行原理图:

①client提交application应用程序,然后会向Master申请启动Driver

②Master会随机找一台节点启动driver

③driver启动后会向Master申请用于执行application的资源

④申请到资源以后,driver会把任务发送到worker节点上执行

⑤worker端会把执行情况和结果返回给driver

 

总结Standalone两种方式提交任务,Driver与集群的通信包括:

1. Driver负责应用程序资源的申请

2. 任务的分发。

3. 结果的回收。

4. 监控task执行情况

 

二、YARN模式

1.yarn下的client模式

./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.2.1.jar  100

执行原理图:

①客户端提交application,会在当前节点启动一个driver

②发送请求到ResourceManager,请求启动ApplicationMaster

③RM收到请求后会随机在一台NodeManager节点上启动AM

④AM启动后会向RM申请一批Container资源用于启动Executor

⑤RM会返回一批NM节点

⑥AM收到这些NM节点信息之后会去对应的NM上启动Executor,Executor启动后会反向注册给driver

⑦driver会把task任务发送到Executor上执行,并且监控task执行情况,回收结果

缺点:同样存在流量激增问题,比如说一个节点上要执行好几千个application,那么这个节点上就会有几千个driver,就会导致客户端所在的节点上存在网卡流量暴增的问题。所以这个模式一般只用于测试

2.yarn下的cluster模式

./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.2.1.jar 100

执行原理图:

①客户端提交application,发送请求到RS,请求启动AM

②RM会随机找一台NM节点启动AM,这时AM相当于driver端

③AM启动后会向RS请求一批Container用于启动Executor

④RS会返回一批NM节点

⑤AM会去启动Executor,executor启动后会反向注册给deriver

⑥driver会发送task任务到executor上执行,并监控执行情况,回收结果

ApplicationMaster的作用:

1.为当前的Application申请资源

2.给NodeManger发送消息启动Excutor。

3.任务调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值