天天看點

Standalone-client|cluster

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.執行流程圖

Standalone-client|cluster

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.任務執行流程圖

Standalone-client|cluster

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

繼續閱讀