Yarn模式兩種提交任務方式
一、yarn-client提交任務方式
1、提交命令
./spark-submit
--master yarn
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
或者
./spark-submit
--master yarn–client
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
或者
./spark-submit
--master yarn
--deploy-mode client
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
2、執行原理圖解
1)、執行流程
1、客戶端提交一個Application,在客戶端啟動一個Driver進程
2、應用程序啟動會向RS(ResourceManager)發送請求,啟動AM(ApplicationMaster)的資源
3、RS收到請求,隨機選擇一臺NM(NodeManager)啟動AM。這里的NM相當于Standalone中的Worker節點。
4、AM啟動后,會向RS請求一批container資源,用于啟動Executor。
5、RS會找到一批NM返回給AM,用于啟動Executor。
6、AM會向NM發送命令啟動Executor
7、Executor啟動后,會反向注冊給Driver,Driver 發送task到Executor,執行情況和結果返回給Driver端。
2)、總結
Yarn-client模式同樣是適用于測試,因為Driver運行在本地,Driver會與yarn集群中的Executor進行大量的通信,會造成客戶機網卡流量的大量增加.
- ApplicationMaster的作用:
- 為當前的Application申請資源
- 給NameNode發送消息啟動Executor。
注意:ApplicationMaster有launchExecutor和申請資源的功能,并沒有作業調度的功能。
二、yarn-cluster提交任務方式
1、提交命令
./spark-submit
--master yarn
--deploy-mode cluster
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
或者
./spark-submit
--master yarn-cluster
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
2、執行原理圖解
1)、執行流程
- 客戶機提交Application應用程序,發送請求到RS(ResourceManager),請求啟動AM(ApplicationMaster)。
- RS收到請求后隨機在一臺NM(NodeManager)上啟動AM(相當于Driver端)。
- AM啟動,AM發送請求到RS,請求一批container用于啟動Executor。
- RS返回一批NM節點給AM。
- AM連接到NM,發送請求到NM啟動Executor。
- Executor反向注冊到AM所在的節點的Driver。Driver發送task到Executor。
2)、總結
Yarn-Cluster主要用于生產環境中,因為Driver運行在Yarn集群中某一臺nodeManager中,每次提交任務的Driver所在的機器都是隨機的,不會產生某一臺機器網卡流量激增的現象,缺點是任務提交后不能看到日志。只能通過yarn查看日志。
- ApplicationMaster的作用:
- 為當前的Application申請資源
- 給NameNode發送消息啟動Excutor。
- 任務調度。
- 停止集群任務命令:yarn application -kill applicationID