Spark on YARN任務提交流程

Spark on YARN是spark運行在yarn上,其中有yarn-client和yarn-cluster兩種模式,它們的區別在於Driver運行的結點位置。

  • yarn-client模式
    yarn-client模式下的spark的Driver運行在客戶端,適用於交互、調試,希望立即看到app的輸出。
  • yarn-cluster模式
    yarn-cluster模式下的spark的Driver運行在ResourceManager(以下簡稱RM)啓動的ApplicationMaster(以下簡稱AM)下,這個模式適用於生產環境,本次介紹的任務提交流程也是基於這個模式的。

先看概覽圖:
在這裏插入圖片描述

  1. App Submit
    首先我們寫好的代碼經過打包成jar文件,然後通過spark client提交給yarn的RM。RM是yarn的資源管理器,負責調度集羣的資源。
  2. 啓動Driver
    Spark App被提交到RM後,RM會在集羣的一個節點上啓動AM以及Driver。
  3. 申請資源
    AM向RM申請資源,提供spark程序所需的資源。
  4. 返回資源列表
    RM向AM返回自己的資源列表。
  5. 創建執行器對象Executor
    爲了平衡壓力,AM會在集羣的其他NodeManager啓動Executor,由於在YARN及羣中,要實現計算框架可插拔,不會直接在NM創建Executor,要通過Container容器創建執行器Executor。因爲NM還要執行其他計算框架的任務,所以抽象了一個Container容器來創建特定的計算框架的任務。
  6. 反向註冊
    Executor創建完成後要向Driver註冊,告訴Driver Executor已經創建成功。
  7. 分解任務,調度任務
    Driver等待所有Executor創建好後(上圖只創建了一個Executor)就會把客戶端提交上來的任務進行分解,然後分發到所有的Executor中去。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章