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.执行流程图
3.执行流程
3.1 客户端提交任务Application,并开启Driver 3.2 Driver向Master申请Application需要的资源 3.3 在Master返回对应的资源后,Driver会将任务task发送到对应的worker上执行 3.4 Worker将task的执行结果返回给Driver4.注意: 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将任务执行情况和执行结果返回给Driver4.注意 Driver是分散在集群中的,这样客户端的网卡流量激增问题就被解决了。但这时在客户端则无法查看到任务的执行情况
Driver与集群之间的通信 1.Driver向Master资源的申请 2.Driver向Worker分发任务 3.Worker向Driver汇报任务运行情况 4.Worker向Driver汇报任务结果