YARN原理介紹

文章包含內容:網絡

1. YARN產生背景架構

2. YARN基本架構及原理app

-----------------------------------------------------------框架

1. YARN產生背景運維

Hadoop1.x中的MapReduce構成圖oop

  在Hadoop1.0中,MapReduce主要是由JobTracker和TaskTracker構成。MapReduce採用了Master/Slave架構,表現形式爲一個JobTracker帶多個TaskTracker,做爲Master的JobTracker,它是整個集羣的惟一的全局管理者,它也是一個服務進程,啓動以後,它會一直監聽並接收來自各個TaskTracker發送的「心跳」信息,資源使用狀況和任務運行狀況。大數據

  JobTracker主要有兩大功能:首先是做業佈置,在Hadoop中,每一個應用程序被表示爲一個做業,每一個做業又被分紅多個任務,JobTracker的做業控制模塊負責做業的分解和狀態的監控。監控是對TaskTracker的狀態進行監控,做業狀態、任務狀態進行監控,其做用是容錯和對任務調度提供依據。第二個JobTracker的主要功能是資源管理,JobTracker在Hadoop1中身兼多職,這也爲它後面,包括它的擴展性和單點故障埋下了隱患。spa

  做爲Slave的TaskTracker有兩個做用:第一個是彙報心跳,TaskTracker會週期性的將全部節點上各類信息經過心跳機制彙報給JobTracker,包括節點的健康情況、資源使用狀況、任務執行進度、任務進行狀態等。第二個是執行命令,執行JobTracker給TaskTracker下達的各類命令,包括啓動任務、提交任務、殺死任務、殺死做業和從新初始化。設計

Hadoop1.x中MapReduce弊端blog

  擴展性差、可靠性差、資源利用率低、沒法支持多種計算框架 

擴展性差

  JobTracker兼備了資源管理和做業控制兩大功能,這成爲系統的一個最大瓶頸,它嚴重製約了Hadoop集羣的擴展性。後面爲解決這個問題,設置了YARN,YARN只負責資源管理。

 可靠性差

   由於Hadoop1種MapReduce採用Master/slave結構,所以做爲Master的JobTracker一旦發生單點故障,將致使整個集羣不可用。

資源利用率低

   Hadoop1的MapReduce採用了一種基於槽位(slot)的資源分配模式,槽位是一種粗粒度的資源劃分單位,一般一個任務不會用完槽位的固定資源,且其餘任務也沒法使用這些空閒資源。咱們一般將槽位分爲map slot和reduce slot兩種,且不容許它們之間共享,經常會致使一種槽位資源緊張,而另外一種槽位資源空閒,這會大大浪費資源。後面也會講到YARN的資源分配的單位container。

  沒法支持多種計算框架

   MapReduce是一種基於磁盤的離線計算,如今大數據不只僅包括這種離線計算,還包括內存計算、流式計算、迭代式計算,而hadoop1和MapReduce沒法支持多種計算框架。在一個平臺上集成多種計算框架的優勢是:1.資源利用率高,若是每一個框架一個集羣,則每每由於應用程序的數量和資源利用率的不均衡,使得在某段時間內,某些框架內的資源緊張,而另一些資源空閒。共享集羣模式則經過多種框架共享資源,使集羣中的資源能夠充分地利用。2.運維成本低。3.數據共享 因爲數據量的暴增,跨集羣間的數據移動不只花費時間長,且運維成本也會大大增長,共享集羣可讓多種框架共享數據和硬件資源,這能夠減小數據移動帶來的成本。

 

 基於上述缺點,Hadoop2提供了一個資源管理器YARN。

 

2. YARN基本架構及原理

  YARN是一種Hadoop資源管理器,它是一個通用資源管理系統,可爲上層應用提供統一的資源管理和調度,它的引入爲集羣在利用率、資源統一管理和數據共享等方面帶來了巨大好處。YARN主要是由ResourceManager,NodeManager和application master和相應的container構成的。

YARN的主要組件

  ResourceManager

  ApplicaitonMaster

  NodeManager

  Container

YARN的結構圖

  Resource Manager主要負責這些Node Manager資源統一的管理和調度,當用戶提交一個應用程序,須要提交一個用於跟蹤管理這個應用程序的Application Master,在Node Manager上Container上產生的一個Application Master,Application Master主要負責向Resource Manager申請資源,並要求NodeManager啓動能夠佔用必定資源任務,Application Master向Resource Manager不斷地以輪詢的方式索要資源,要到資源之後,它會要求Node Manager在相應的資源上啓動它的任務。

  Resource Manager是什麼?

  Resource Manager是一個全局資源管理器,它負責整個系統的資源管理分配,主要由兩個組件構成:一個是調度器,一個是應用程序管理器,Resource Scheduler和Application Manager。

  Resource Manager的調度器是一個純的調度器,它不從事任何與應用程序相關的工做,它將系統中的資源分配給各個正在運行中的程序,它不負責監控或者跟蹤應用的執行狀態,也不負責從新啓動因應用程序失敗或者硬件故障而產生的失敗任務。這些都由應用程序對應的Application Master完成。調度器是一個可插拔的組件,用戶能夠根據本身的須要設計新的調度器,YARN提供了不少直接可用的調度器。

  應用程序管理器,它負責整個系統中全部應用程序,包括應用程序提交,與調度器協商資源已啓動Application Master,監控Application Master運行狀態,並在失敗的時候通知它。而具體的任務,則交給Application Master去管理,至關於一個項目經理。用戶提交的每個應用程序都包含一個Application Master,Application Master主要是與Resource Manager協調協商獲取資源Application Master將獲得的做業分配內部的這些任務Application Master負責與Node Manager通訊以啓動中止任務,並監控該應用程序所在,全部任務運行狀態,當任務運行失敗時,從新爲任務申請資源並重啓任務。

  Node Manager做爲YARN的一個slave,它是整個運行的一個執行者,Node Manager是每一個節點上資源和任務管理器,它會定時向Resource Manager彙報本節點的資源使用狀況和各個Container(這是一個動態的資源單位)的運行狀態,而且Node Manager接收並處理來自Application Master的Container啓動和中止等請求。Container資源抽象,它是封裝了某個節點的多維度資源,好比封裝了內存、CPU、磁盤、網絡,當Application Master向Resource Manager申請資源時,Resource Manager爲Application Master返回的資源是一個Container,獲得資源的任務只能使用該Application Master,Container是根據應用程序需求動態生成的。

流程圖

 

工做原理

  首先,Client向YARN中提交一個應用程序,包括Application Master,啓動Application Master和用戶程序;

  而後,ResourceManager會爲該應用程序分配一個Container,它首先會跟Node Manager進行通訊,要求它在這個Container中啓動應用程序的Application Master;

  第三步,Application Master一旦生成之後,它首先會向ResourceManager註冊,這樣用戶能夠直接經過ResourceManager查看應用程序的運行狀態,而後它將爲各個任務申請資源並監控它們的運行狀態,直到運行結束,它會以輪詢的方式,經過RPC協議向ResouceManager申請和領取資源,一旦Application Master申請到資源後,它會和Node Manager通訊,要求它啓動任務;

  Node Manager爲任務設置好運行環境,以及環境變量、架包還有二進制程序,將任務啓動命令寫在腳本中,並經過運行該腳本啓動任務,各個任務經過RPC協議向Application Master彙報本身的狀態和進度,這樣會讓Application Master隨時掌握各個任務的一個運行狀態,一旦任務失敗,Application Master就會重啓該任務,從新申請資源。應用程序運行完成後,Application Master就會向ResourceManager註銷並關閉此任務。咱們在應用程序整個運行過程當中能夠用RPC向Application Master查詢應用程序當前的運行狀態,在Web上能夠看到整個的做業的運行狀態。

相關文章
相關標籤/搜索