Standalone-client
1.任务提交
./spark-submit
--master spark://node1:7077 #master在那个节点上
--deploy-mode client #任务提交方式,client cluster两种,不写的情况下默认是client
--class org.apache.spark.examples.SparkPi #类名
../examples/jars/spark-examples_2.11-2.3.1.jar #类所在的jar包
1000 #可写可不写,1000个application执行
2.执行流程图
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35UMNRVT1kFRNdXW65Ee4EDZ2A3MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1gTO0AzNwkTMzITNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3.执行流程
3.1 客户端提交任务Application,并开启Driver
3.2 Driver向Master申请Application需要的资源
3.3 在Master返回对应的资源后,Driver会将任务task发送到对应的worker上执行
3.4 Worker将task的执行结果返回给Driver
4.注意:
client使用与任务测试阶段。Driver是在客户端启动的,即提交任务的节点。在Driver端可以看到任务的执行流程和任务结果。在生产环境不能使用,如果有一百个application提交到集群,则会有100个Driver在客户端执行,每个客户端都会与任务有交互,这样就会使客户端的流量急剧增加。
Standalone-cluster
1.提交任务
./spark-submit
--master spark://node1:7077 #master在那个节点上
--deploy-mode cluster #任务提交方式,client cluster两种,不写的情况下默认是client
--class org.apache.spark.examples.SparkPi #类名
../examples/jars/spark-examples_2.11-2.3.1.jar #类所在的jar包
1000 #可写可不写,1000个application执行
2.任务执行流程图
3.执行流程
3.1 客户端提交任务Application
3.2 向Master申请启动Driver
3.3 Master会随机找一台任务不忙的节点启动Driver
3.4 Driver会向Master申请Application需要的资源
3.5 Driver将申请的worker分发task
3.6 Worker将任务执行情况和执行结果返回给Driver
4.注意
Driver是分散在集群中的,这样客户端的网卡流量激增问题就被解决了。但这时在客户端则无法查看到任务的执行情况
Driver与集群之间的通信
1.Driver向Master资源的申请
2.Driver向Worker分发任务
3.Worker向Driver汇报任务运行情况
4.Worker向Driver汇报任务结果