1. 程式人生 > >Yarn執行原理

Yarn執行原理

1. Yarn架構

在這裡插入圖片描述

從 YARN 的架構圖來看,它主要由ResourceManager、NodeManager、ApplicationMaster和Container等以下幾個元件構成。

1.1 ResourceManager(RM)

YARN 分層結構的本質是 ResourceManager。這個實體控制整個叢集並管理應用程式向基礎計算資源的分配。ResourceManager 將各個資源部分(計算、記憶體、頻寬等)精心安排給基礎 NodeManager(YARN 的每節點代理)。ResourceManager 還與 ApplicationMaster 一起分配資源,與 NodeManager 一起啟動和監視它們的基礎應用程式。在此上下文中,ApplicationMaster 承擔了以前的 TaskTracker 的一些角色,ResourceManager 承擔了 JobTracker 的角色。

RM的作用如下:

  1. 處理客戶端請求
  2. 啟動或監控ApplicationMaster
  3. 監控NodeManager
  4. 資源的分配與排程

1.2 ApplicationMaster(AM)

ApplicationMaster 管理在YARN內執行的每個應用程式例項。ApplicationMaster 負責協調來自 ResourceManager 的資源,並通過 NodeManager 監視容器的執行和資源使用(CPU、記憶體等的資源分配)。請注意,儘管目前的資源更加傳統(CPU 核心、記憶體),但未來會帶來基於手頭任務的新資源型別(比如圖形處理單元或專用處理裝置)。從 YARN 角度講,ApplicationMaster 是使用者程式碼,因此存在潛在的安全問題。YARN 假設 ApplicationMaster 存在錯誤或者甚至是惡意的,因此將它們當作無特權的程式碼對待。

AM的作用如下:

  1. 負責資料的切分
  2. 為應用程式申請資源並分配給內部的任務
  3. 任務的監控與容錯

1.3 NodeManager(NM)

NodeManager管理YARN叢集中的每個節點。NodeManager 提供針對叢集中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1 通過插槽管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表著可供一個特定應用程式使用的針對每個節點的資源。

NM的作用如下:

  1. 管理單個節點上的資源
  2. 處理來自ResourceManager的命令
  3. 處理來自ApplicationMaster的命令

1.4 Container

Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。

總的來說,Container有以下作用:

  1. 對任務執行環境進行抽象,封裝CPU、記憶體等多維度的資源以及環境變數、啟動命令等任務執行相關的資訊

2. Yarn原理

在這裡插入圖片描述


參考:

YARN的入門介紹
初步掌握Yarn的架構及原理