1.Standalone-client 送出任務方式
送出指令:
[root@node4 bin]# ./spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi /opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar 100
[root@node4 bin]# ./spark-submit --master spark://node1:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi /opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar 100
#兩種送出都行
執行原理圖解

執行流程:
- client 模式送出任務後,會在用戶端啟動 Driver 程序。
- Driver 會向 Master 申請啟動 Application 啟動的資源。
- Master 收到請求之後會在對應的 Worker 節點上啟動 Executor
- Executor 啟動之後,會注冊給 Driver 端,Driver 掌握一批計算 資源。
- Driver 端将 task 發送到 worker 端執行。worker 将 task 執行結 果傳回到 Driver 端。
特點:當在用戶端送出多個Spark application時,每個application都會啟動一個Driver
總結:client 模式适用于測試調試程式。Driver 程序是在用戶端啟動的,這裡的客 戶端就是指送出應用程式的目前節點。在 Driver 端可以看到 task 執行的情 況。生産環境下不能使用 client 模式,是因為:假設要送出 100 個,application 到叢集運作,Driver 每次都會在 client 端啟動,那麼就會導緻 用戶端 100 次網卡流量暴增的問題。client 模式适用于程式測試,不适用 于生産環境,在用戶端可以看到 task 的執行和結果
2.Standalone-cluster 送出任務方式
送出指令
[root@node4 bin]# ./spark-submit --master spark://node1:7077 --deploy-mode cluster --class org.apache.spark.examples.SparkPi /opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar 100
執行原理圖解
執行流程
- cluster 模式送出應用程式後,會向 Master 請求啟動 Driver.
- Master 接受請求,随機在叢集一台節點啟動 Driver 程序。
- Driver 啟動後為目前的應用程式申請資源。
- Driver 端發送 task 到 worker 節點上執行。
- worker 将執行情況和執行結果傳回給 Driver 端。
- Driver 負責應用程式資源的申請。
- 任務的分發。
- 結果的回收。
- 監控 task 執行情況。