【大數據】Spark On Yarn

Spark在YARN中有yarn-cluster和yarn-client兩種運行模式:

 I. Yarn client

在yarn-client模式下,Driver運行在Client上,經過ApplicationMaster向RM獲取資源。本地Driver負責與全部的executor container進行交互,並將最後的結果彙總。html

 執行流程 

- 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端。node

總結

1.Yarn-client模式一樣是適用於測試,由於Driver運行在本地,Driver會與yarn集羣中的Executor進行大量的通訊,會形成客戶機網卡流量的大量增長.app

2.ApplicationMaster的做用: 測試

  • 爲當前的Application申請資源 
  • 給NodeManager發送消息啓動Executor。

II. Yarn Cluster

Spark Driver做爲一個ApplicationMaster在YARN集羣中啓動,客戶端提交給ResourceManager的每個job都會在集羣的worker節點上分配一個惟一的ApplicationMaster,由該ApplicationMaster管理全生命週期的應用。由於Driver程序在YARN中運行,因此事先不用啓動Spark Master/Client,應用的運行結果不能在客戶端顯示(能夠在history server中查看),因此最好將結果保存在HDFS而非stdout輸出,客戶端的終端顯示的是做爲YARN的job的簡單運行情況。

執行流程

  • 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。.net

總結

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

2.ApplicationMaster的做用: server

  • 當前的Application申請資源 
  • 給nodemanager發送消息 啓動Excutor。 
  • 任務調度。(這裏和client模式的區別是AM具備調度能力,由於其就是Driver端,包含Driver進程)

3.中止集羣任務命令:yarn application -kill applicationIDhtm

兩者區別

它們的區別就是ApplicationMaster的區別blog

yarn-cluster中ApplicationMaster不只負責申請資源,並負責監控Task的運行情況,所以能夠關掉client;生命週期

yarn-client中ApplicationMaster僅負責申請資源,由client中的driver來監控調度Task的運行,所以不能關掉client。

參考:

http://www.javashuo.com/article/p-nmomhaah-nt.html

http://www.javashuo.com/article/p-pivvzhbn-eg.html

相關文章
相關標籤/搜索