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彙報任務結果