1. 程式人生 > >Spark中yarn模式兩種提交任務方式(yarn-client與yarn-cluster)

Spark中yarn模式兩種提交任務方式(yarn-client與yarn-cluster)

Spark可以和Yarn整合,將Application提交到Yarn上執行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。

1.yarn-client提交任務方式

配置
在client節點配置中spark-env.sh新增Hadoop_HOME的配置目錄即可提交yarn 任務,具體步驟如下:

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

注意client只需要有Spark的安裝包即可提交任務,不需要其他配置(比如slaves)!!!

提交命令

/opt/spark/bin/spark-submit --master yarn  --class org.apache
.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.2.0.jar 100 /opt/spark/bin/spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.2.0.jar 100 /opt/spark/bin/spark-submit --master yarn --deploy-mode client --class org.apache.spark
.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.2.0.jar 100

這裡寫圖片描述

執行原理圖解
這裡寫圖片描述
執行流程
- 1.客戶端提交一個Application,在客戶端啟動一個Driver程序。
- 2.Driver程序會向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端。

總結

  • 1.Yarn-client模式同樣是適用於測試,因為Driver執行在本地,Driver會與yarn叢集中的Executor進行大量的通訊,會造成客戶機網絡卡流量的大量增加.

  • 2.ApplicationMaster的作用:
    為當前的Application申請資源
    給NodeManager傳送訊息啟動Executor。

    注意:ApplicationMaster有launchExecutor和申請資源的功能,並沒有作業排程的功能。

2.yarn-cluster提交任務方式

提交命令

/opt/spark/bin/spark-submit --master yarn --deploy-mode cluster  --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.2.0.jar  100

/opt/spark/bin/spark-submit --master yarn-cluster  --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.11-2.2.0.jar 100 

結果在yarn的日誌裡面:
這裡寫圖片描述
執行原理
這裡寫圖片描述

執行流程

  • 1.客戶機提交Application應用程式,傳送請求到RS(ResourceManager),請求啟動AM(ApplicationMaster)。
  • 1.RS收到請求後隨機在一臺NM(NodeManager)上啟動AM(相當於Driver端)。
  • 2.AM啟動,AM傳送請求到RS,請求一批container用於啟動Executor。
  • 3.RS返回一批NM節點給AM。
  • 4.AM連線到NM,傳送請求到NM啟動Executor。
  • 5.Executor反向註冊到AM所在的節點的Driver。Driver傳送task到Executor。

    總結

  • 1.Yarn-Cluster主要用於生產環境中,因為Driver執行在Yarn叢集中某一臺nodeManager中,每次提交任務的Driver所在的機器都是隨機的,不會產生某一臺機器網絡卡流量激增的現象,缺點是任務提交後不能看到日誌。只能通過yarn檢視日誌。

  • 2.ApplicationMaster的作用:
    當前的Application申請資源
    給nodemanager傳送訊息 啟動Excutor。
    任務排程。(這裡和client模式的區別是AM具有排程能力,因為其就是Driver端,包含Driver程序)

  • 3.停止叢集任務命令:yarn application -kill applicationID

自我最後總結:stand-alone模式中Master傳送對應的命令啟動Worker上的executor程序,而yarn模式中的applimaster也是負責啟動worker中的Driver程序,可見都是master負責傳送訊息,然後再對應的節點上啟動executor程序。菲官方證實,僅供理解!!!