1. 程式人生 > >Spark中Standalone的兩種提交模式(Standalone-client模式與Standalone-cluster模式)

Spark中Standalone的兩種提交模式(Standalone-client模式與Standalone-cluster模式)

Spark中Standalone有兩種提交模式,一個是Standalone-client模式,一個是Standalone-cluster模式。

1.Standalone-client提交任務方式

提交命令

./spark-submit --master  spark://node01:7077 --class org.apache.spark.examples.SparkPi  ../lib/spark-examples-1.6.
0-hadoop2.6.0.jar 100
./spark-submit --master  spark://node01:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi  ../li
b/spark-examples-1.6.0-hadoop2.6.0.jar 100

解釋:–class org.apache.spark.examples.SparkPi main函式

../lib/spark-examples-1.6.0-hadoop2.6.0.jar    jar包    100     main函式需要引數
  • 1

執行原理圖解 
這裡寫圖片描述

執行流程

  • 1.client模式提交任務後,會在客戶端啟動Driver程序。
  • 2.Driver會向Master申請啟動Application啟動的資源。
  • 3.資源申請成功,Driver端將task傳送到worker端執行。
  • 4.worker將task執行結果返回到Driver端。

總結 
- 1.client模式適用於測試除錯程式。Driver程序是在客戶端啟動的,這裡的客戶端就是指提交應用程式的當前節點。在Driver端可以看到task執行的情況。生產環境下不能使用client模式,是因為:假設要提交100個application到叢集執行,Driver每次都會在client端啟動,那麼就會導致客戶端100次網絡卡流量暴增的問題。(因為要監控task的執行情況,會佔用很多埠,如上圖的結果圖)客戶端網絡卡通訊,都被task監控資訊佔用。

  • 2.Client端作用 
    Driver負責應用程式資源的申請 
    任務的分發。 
    結果的回收。 
    監控task執行情況。

2.Standalone-cluster提交任務方式

提交命令

./spark-submit  --master spark://node01:7077  --deploy-mode cluster --class org.apache.spark.examples.SparkPi  ../lib/spark-examples-1.6.0-hadoop2.6.0.jar  100
  • 1

這裡寫圖片描述
執行原理圖解 
這裡寫圖片描述

執行流程 
- 1.cluster模式提交應用程式後,會向Master請求啟動Driver.(而不是啟動application) 
- 2.Master接受請求,隨機在叢集一臺節點啟動Driver程序。 
- 3.Driver啟動後為當前的應用程式申請資源。Master返回資源,並在對應的worker節點上傳送訊息啟動Worker中的executor程序。 
- 4.Driver端傳送task到worker節點上執行。 
- 5.worker將執行情況和執行結果返回給Driver端。Driver監控task任務,並回收結果。

總結 
- 1.當在客戶端提交多個application時,Driver會在Woker節點上隨機啟動,這種模式會將單節點的網絡卡流量激增問題分散到叢集中。在客戶端看不到task執行情況和結果。要去webui中看。 
- 2.cluster模式適用於生產環境 
- 3.Master模式先啟動Driver,再啟動Application。