文章目錄
Spark基于Yarn提交任務流程
一、Yarn-Client模式
1、提交命令
2、任務執行流程
二、Yarn-Cluster模式
1、提交命令
2、任務執行流程
Spark基于Yarn提交任務流程
在Yarn模式下,Spark的任務提交同樣根據Driver程序運行的位置不同,分為client和cluster兩種模式。以下分別介紹這兩種模式。
一、Yarn-Client模式
1、提交命令
在啟動Yarn集群后,可在node5節點上執行以下命令以Client模式提交任務:
[root@node5 ~]# cd /software/spark-3.5.5/bin/
#第一種方式
[root@node5 bin]# ./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000#第二種方式
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000
以上命令中注意如下幾點:
- “--master”參數指定Applicatin的Master URL,即運行模式;“--deploy-mode”參數指定Driver程序的部署模式,可選Client/Cluster,默認為Client;“--class”參數指定Application的主類。
- 以上兩種提交方式命令主要在于是否指定參數“--deploy-mode”,該值默認為Client,也可以不指定。
- 任務提交后,可以在客戶端看到“SparkSubmit”進程,該進程可以看做為Driver進程;在Yarn集群NodeManager節點可以看到“ExecutorLauncher”和“CoarseGrainedExecutorBackend”進程(Executor進程),ExecutorLauncher實際可以看做AM(內部調用AM的main方法),負責申請資源和啟動Executor,CoarseGrainedExecutorBackend負責執行Task。
2、任務執行流程
Yarn Client模式提交任務流程如下圖所示:
-
Yarn集群啟動,NodeManager(NM)向ResourceManager(RM)匯報資源,RM掌握集群資源。
-
客戶端提交Application程序,在客戶端啟動 Driver 進程。
-
Driver 向 RM申請啟動 ExecutorLauncher(AM)。
-
RM收到請求,隨機選擇一臺NM啟動ExecutorLauncher(EL)。
-
EL 啟動后,向 RM申請啟動 Executor 所需的資源(Container)。
-
RM分配資源,EL在相應的 NM上啟動 Executor。
-
Executor 啟動后,會向Driver注冊,Driver將task發送到Executor,Task執行情況和結果會返回給 Driver 。
總結:在Yarn-Client模式中,Driver進程在提交Application的客戶端節點上運行,客戶端可以直接查看Task的執行情況和結果。由于Driver與集群中的Executor需要頻繁通信,如果在客戶端提交大量Application,可能會導致客戶端的網絡負載過高。因此,該模式適用于測試環境,不建議在生產環境中使用。
二、Yarn-Cluster模式
1、提交命令
啟動Yarn集群后,在node5節點上執行如下命令以Yarn Cluster模式提交任務:
[root@node5 ~]# cd /software/spark-3.5.5/bin/
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000
以上命令中注意如下幾點:
- “--master”參數指定Applicatin的Master URL,即運行模式;“--deploy-mode”參數指定Driver程序的部署模式,可選Client/Cluster,默認為Client;“--class”參數指定Application的主類。
- 任務提交后,可以在NodeManager節點上看到”ApplicationMaster”和“YarnCoarseGrainedExecutorBackend”進程,ApplicationMaster負責為當前Application申請資源、啟動Executor、調度Task;“YarnCoarseGrainedExecutorBackend”負責task執行。
- Yarn-Cluster模式提交任務后,在客戶端看不到任務結果,需要通過Yarn WebUI查看日志,查看結果。查看日志時,需要啟動Yarn歷史日志服務(命令:mapred --daemon start historyserver)。
2、任務執行流程
Yarn Cluster模式提交任務流程如下圖所示:
-
Yarn集群啟動,NodeManager(NM)向ResourceManager(RM)匯報資源,RM掌握集群資源。
-
客戶端提交Application應用程序,向 RM請求啟動 ApplicationMaster(AM)。
-
RM隨機在某個NM上啟動 AM(此時,AM相當于Driver端)。
-
AM 啟動后,向 RM申請啟動 Executor 所需的資源(請求一批Container)。
-
RM分配資源,AM 在相應的 NM上啟動 Executor。
-
Executor 啟動后,向 AM(Driver)注冊,AM發送task給Executor并監控task執行,結果返回給AM。
總結:在Yarn-Cluster模式中,ApplicationMaster(AM)相當于Driver進程,運行在集群中的某個NodeManager上。由于Driver進程在集群內部運行,客戶端提交任務后無法直接查看Task的執行結果,需要通過集群的Web UI查看。這種模式適合生產環境,因為每個Application的Driver進程會隨機在集群中的某個NodeManager上啟動,避免了在客戶端模式下可能出現的網絡負載集中問題。
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?