Hadoop YARN 架構

banq發表於2021-12-26

Hadoop YARN代表又一個資源管理器,隨著 Hadoop 2.x 的出現,YARN 成為 Hadoop 生態系統的一部分,

YARN 管理叢集環境中的資源,在 Hadoop 2.x 之前我們沒有任何資源管理器嗎?

當然,在 Hadoop 2.x 之前我們有一個資源管理器,它被稱為Job Tracker。

  

那麼什麼是JobTracker?

JobTracker (JT) 用於管理叢集資源並執行 MapR 或 MapReduce 作業執行,這意味著資料處理。JT 配置和監控每個正在執行的任務。如果一個任務失敗,它會重新分配一個新的槽讓任務重新開始。任務完成後,它會釋放資源並清理記憶體。

JT 用於執行很多工,這種方法也有一些缺點。我沒有在 Hadoop 1.x 上工作過,但試圖在下面列出其中的一些。

上述方法的缺點:

  1. 它有一個元件:JobTracker 來執行許多活動,如資源管理、作業排程、作業監控、重新排程作業等,這給單個元件帶來了很大的壓力。
  2. JobTracker 是單點故障,這使得 JT 資源具有高可用性,因此如果 JT 失敗,則所有任務都將重新啟動。
  3. 靜態資源分配,由於 map 和 reduce 槽是預定義和保留的,即使槽處於空閒狀態,它們也不能用於其他應用程式。

以上是 Hadoop 1.x 工作方式的一些主要缺點。

所以下一個想到的問題是,YARN 如何解決這個目的?

YARN將資源管理層和資料處理元件層分開。

在 MapR1 中,所有資源管理和處理的任務都是由 JobTracker 完成的,但是隨著 Hadoop 2.x 的釋出,兩個層都被劃分了,對於資源管理層,我們有了YARN。現在 Hadoop 2.x 說,資料處理使用 MapR、Spark、Tez 和其他可用的資料處理框架,而 YARN 負責資源協商。

Hadoop 2.x 將 MapR 元件解耦為不同的元件,最終增加了整個生態系統的能力,從而實現了更高的可用性和更高的可擴充套件性

 

YARN 及其元件

YARN包含兩個元件:資源管理器和節點管理器。

 

資源管理器

Spark 工作在主從架構上,資源管理器存在於主節點上。RM 是主要權威,有助於管理不同作業的資源,例如 RAM、CPU 使用率、網路頻寬等。資源管理器維護正在執行的應用程式列表和可用資源列表。

資源管理器有兩個元件:排程程式和應用程式管理器。

  • 排程器:

排程器代表資源管理器處理資源分配部分。它根據資源的可用性將資源分配給各種 MapR 或 Spark 應用程式。

排程程式純粹負責資源分配,不涉及任何其他活動,如監控或跟蹤作業狀態等。

  • 應用管理者:

Application Manager在從節點中啟動特定於應用程式的Application Master。

注意:Application Manager和Application master是不同的元件。

簡而言之,當資源管理器接受新的 MapR 或 Spark 應用程式提交時,排程程式所做的初始決定之一是選擇一個容器來為該特定應用程式啟動 Application Master,應用程式管理器負責啟動相同的應用程式。

 

節點管理器

在 Hadoop 2.x 之前,使用固定數量的槽來執行 Map 和 Reduce 作業,但在 Hadoop 2.x 之後槽的概念被資源容器的動態建立/分配所取代。

一個容器是指資源,例如CPU,RAM,磁碟或硬碟,以及網路IO,類似於一個伺服器的集合。

一個節點管理器負責保持容器中的每臺機器的框架代理,監測他們的資源使用(CPU,記憶體,磁碟等),並將其報告回撥度出現在資源管理器。節點管理器存在於從屬系統上。

節點管理器按計劃執行資源的健康檢查,如果任何健康檢查失敗,節點管理器會將該節點標記為不健康並將其報告回資源管理器。

資源管理器 + 節點管理器 = 計算框架

 

Application master 

Application master 是特定於應用程式或每個應用程式的,由應用程式管理器啟動。

Application Master 從資源管理器協商資源,並與節點管理器一起執行和監控任務。Application Master 負責應用程式的整個生命週期。

Application Master 向資源管理器傳送資源請求,並要求容器執行應用程式任務。在收到來自應用程式主機的請求後,資源管理器會驗證資源需求並檢查資源的可用性,並授予一個容器來滿足資源請求。

容器被授予後,應用程式主將請求節點管理器利用資源並啟動特定於應用程式的任務。

Application Master 監視應用程式及其任務的進度。如果發生故障,它會請求一個新容器來啟動任務並報告故障。

應用程式執行完成後,Application Master 自行關閉並釋放其容器。因此標誌著執行完成。

相關文章