20200624——yarn

Yarn是什麼

yarn是一個資源調度框架
在古老的hadoop1.0裏面,MapReduce中的JobTracker負責了太多的任務,於是在2.0升級的過程,將這一部分獨立出來,也就是yarn。
yet another resource nagotiator 另一種資源調度器

Yarn的架構

架構圖

在這裏插入圖片描述

Container

容器這個東西是Yarn對資源做的一層抽象,日常開發中,經常需要對底層封裝,只提供給上層一個調用接口一樣。
在這裏插入圖片描述
一個nodemanager裏面可以有多個container,container中有cpu和內存。
容器被nodemanager啓動,管理,並且實時監控。
容器被resourcemanager進行調度。

resourcemanager

從名字上我們就可以知道resourcemanager負責管理資源,整個系統只有一個rm。當時rm中其實包含了兩個組件,一個resource scheduler資源調度器,另一個是application manager應用管理器。

resource scheduler 定時調度器

從本質上來說,scheduler就是一種策略,一種算法。當client提交一個任務的時候,他會根據所需要的資源以及當前集羣的資源狀況進行分配。注意,它只會負責嚮應用程序分配資源,並不做監控以及應用程序的追蹤。

application manager

應用管理器就是負責管理client用戶提交用戶提交的應用,監控的任務是application manager負責。

application master

每當client提交一個application的時候,就會新建一個applicationmaster。由這個applicationmaster向resource mananger申請容易資源,獲得資源之後將要運行的程序發送到容器上啓動,然後進行分佈式計算。

application master 的職能

application master實際上是特定計算框架的一個實例,每種計算框架都有自己獨特的applicaiton master,負責與resource manager協商資源,並與nodemanager 一同監管container,

1)初始化向resource manager報告自己的活躍信息的進程
2)計算應用程序的資源需求
3)將需求轉換成yarn調度器可以理解resourcerequest
4)與調度器協商申請資源
5)與nodemanager協同合作使用分配的container
6)追蹤正在運行的container狀態,監控它的運行
7)對container或者失敗的節點進行處理,再必要的情況下重新申請資源。

nodemanager

nodemanager就是resourcemanager每臺機器的代理,負責容器的管理,並且監控資源的使用情況,以及上resource manager提供報告。

提交application到yarn的流程

在這裏插入圖片描述
1)client提交作業到yarn
2)resource manager 與 node manager 通信,併爲第一個application創建一個容器,這個容器中運行了這個應用的application master
3)application master啓動之後,對作業(application)進行拆分,拆分成task,根據情況在一個或者多個容器中運行。然後像resource manager 申請程序運行的容器,並定時像resource mananger 發送心跳。
4)申請到容器後,ApplicationMaster 會去和容器對應的 NodeManager 通信,而後將作業分發到對應的 NodeManager 中的容器去運行,這裏會將拆分後的 MapReduce 進行分發,對應容器中運行的可能是 Map 任務,也可能是 Reduce 任務。
5)容器中運行的任務會向application master 發送心跳,彙報自身的情況,當程序運行完成之後,application master再向resource manager註銷並釋放資源。

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