Hadoop系列(八)Hadoop三大核心之Yarn-資源調度初探

0. Yarn的來源

​ hadoop 1.x的時代,並沒有Yarn,hadoop核心組件只有HDFS和MapReduce。到了hadoop2.x纔有了Yarn的誕生,組件包含HDFS,MapReduce和Yarn。

​ 誕生原因:hadoop 1.x存在的最大問題就是資源管理問題。技術的發展不再滿足於hadoop集羣中只使用MapReduce一個計算框架,人們更希望有一套合理的管理機制,來控制集羣的資源管理問題。就此Yarn誕生。

1. YARN概述

全稱 Yet Another Resource Negotiator。是一個資源調度平臺,負責爲運算程序提供服務器運算資源,相當於一個分佈式的操作系統平臺,而 MapReduce,spark 等運算程序可以運行在YARN上,相當於應用程序運行於操作系統之上

YARN 是 Hadoop2.x 版本中的一個新特性。它的出現是爲了解決第一代 MapReduce 編程框架的不足,提高集羣環境下的資源利用率,這些資源包括內存,磁盤,網絡,IO等。Hadoop2.X 版本中重新設計的這個 YARN 集羣,具有更好的擴展性,可用性,可靠性,向後兼容性,以及能支持除 MapReduce 以外的更多分佈式計算程序

YARN的特點:

  1. YARN不清楚提交的程序的運行機制
  2. 只提供運算資源的調度,分配。用戶申請就分配。
  3. 與運行的用戶程序完全解耦。 YARN 上可以運行各種類型的分佈式運算程序。比如 MapReduce、Storm 程序,Spark 程序等
  4. yarn 是一個通用的資源調度平臺,企業中存在的各種運算集羣都可以整合在一個物理集羣上,提高資源利用率,方便數據共享

Yarn最大的特點是執行調度與Hadoop上運行的任務類型無關

2. YARN的重要組成部分

有兩類長期運行的守護進程提供核心服務

  • ResourceManager(主節點) :全局資源管理器
  • NodeManager(從節點):節點資源管理器

主從結構如圖

2.1 ResourceManager

整個系統有且只有一個 RM ,來控制整個集羣並管理應用程序向基礎計算資源的分配。ResourceManager與ApplicationMaster一起分配資源,與NodeManager一起啓動和監視它們的基礎應用程序
RM裏面還有兩個重要組成部分:

  1. 應用程序管理器 Application Manager
  2. 資源調度器 Resource Scheduler

ResourceManager名字就是這兩個詞合併而來

(1)Application Manager 應用程序管理器

應用程序管理器就是負責管理 Client 用戶提交的應用的管理器

主要功能:

  1. 負責接收client端傳輸的job請求,爲應用(MapReduce 程序)分配一個Container(資源池)來運行一個Application Master

  2. 負責監控Appication Master

  3. 並且在遇到失敗的時候重啓Application Master

(2)Scheduler 資源調度器

Resource Scheduler即資源調度器,是讓每一個節點都充分利用起來,合理分配和調度資源的一種管理器。

值得注意的是:調度器真的只是一個調度器,不參與任何具體的和應用程序相關的工作。

2.2 NodeManager

NodeManager是YARN集羣當中真正資源的提供者,提供執行應用程序的容器, 監控應用程序的資源使用情況(CPU,內存,硬盤,網絡),並通過心跳向 ResourceManager 進行彙報,以更新自己的健康狀態。同時其也會監督 Container 的生命週期,監控每個 Container 的資源使用情況。
主要功能如下:

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

2.3 邏輯上的組件Application Master

ApplicationMaster 就是一個java程序,進程名:MRAppMaster

作用:負責監控Map、Reduce任務。用戶提交的每一個程序都會產生一個ApplicationMaster,這個AM就是負責整個任務的一個管理者,由這個 AM去向ResourceManager 申請容器資源,獲得資源後會將要運行的程序發送到容器上啓動,然後進行分佈式計算。

主要功能:

  1. 與調度器(Scheduler)協商,獲取執行資源
  2. 與NodeManager通信,啓動任務和停止任務
  3. 監控所有旗下Job的執行狀態,重啓失敗任務

3. Container 資源池

Yarn中的資源抽象,封裝了多維度資源: 內存,cpu,磁盤等。Container就是Scheduler進行資源分配的一個單位,當AM向RM申請資源時,RM爲AM返回的資源便是用Container表示的。YARN會爲每個任務分配一個Container,且該任務只能使用該Container中描述的資源。

  • 容器由 NodeManager 啓動和管理,並被它所監控。
  • 容器被 ResourceManager 進行調度。

4. 小結

Yarn是Hadoop2.x之後引入的新組件。Yarn的架構採用了主從結構,一主多從(ResourceManager & NodeManager)。Yarn在Hadoop中的功能作用有兩個,第一是負責Hadoop集羣中的資源管理(resource management),第二是負責對任務進行調度和監控(scheduling/monitoring)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章