
YARN作為一個通用的資源管理系統,目标是将短作業和長服務混合部署到一個叢集中,并為他們提供統一的資源管理和排程功能,概括起來主要解決以下兩個問題:1.提高叢集資源使用率,2.服務自動化部署。
一、YARN的基本架構:
YARN總體上采用master/slave架構,ResourceManager為master,NodeManager為slave,ResourceManager負責對各個NodeManager上的資源進行統一管理和排程。當使用者送出一個應用程式時,需要提供一個用以跟蹤和管理這個應用程式的ApplicationMaster,它負責向ResourceManager申請資源,并要求NodeManager啟動可以占用一定資源的任務,由于不同ApplicationMaster被分不到不同的節點上,是以它們之前不會互相影響。
YARN:主要由ResourceManager、NodeManager、ApplicationMaster、和Container組成。
ResourceManager(RM):是一個全局的資料總管,負責整個系統的資源管理和配置設定,主要由排程器(Schedule)和應用管理器(Applications Manager)構成。
1、.排程器:主要功能是根據資源容量,隊列等方面限制條件,将系統中的資源配置設定給各個應用程式。
2、應用程式管理器:負責整個系統中所有應用程式,包括應用程式送出、與排程器協商資源以及啟動ApplicationMaster、監控ApplicationMaster運作狀态并在失敗時重新啟動它。
ApplicationMaster(AM):使用者送出的每個應用程式均包含一個獨立的AM,其主要功能包括:與RM排程器協商以獲得資源(用Container表示)、将得到的資源進一步配置設定給内部任務、與NM通信以啟動/停止任務等、監控所有任務的運作狀态。
NodeManager(NM):NM是每個節點上的資料總管,一方面是定時向RM彙報本節點的資源使用情況和各個Container的運作狀态,另一方面,他接收并處理來自AM的任務啟動或停止等各種請求。
Container:是yarn的基本資源配置設定機關,對應用程式運作環境的抽象,并為應用程式提供資源隔離環境,它封裝了如記憶體、cup、磁盤、網絡等。
二、 YARN的高可用:
ResourceManager HA:引入了Active/Standby ResouceManager通過沉餘方式解決ResourceMangager單點故障。
ResourceManager Recovery:内置了重新開機恢複功能
NodeManager Recovery:NodeManager内置了重新開機恢複功能。
三、YARN工作流程
當使用者向yarn送出一個應用程式後,yarn将分兩個階段運作該程式,第一個階段是啟動ApplicationMaster;第二個階段是由ApplicationMaster建立應用程式,為他申請資源,并監控它的運作狀态。
1、送出應用程式
2、啟動ApplicationMaster
3、ApplicationMaster注冊
4、擷取資源
5、請求啟動Container
6、Container監控
7、登出ApplicationMaster
四、YARN資源排程器
層級隊列管理機制:組織方式:子隊列、最小容量、最大容量
多租戶資源排程器:Capacity/Fair Scheduler
1、Capacity Scheduler:以隊列為機關劃分資源,每個隊列可設定一定比例的資源最低保證和使用上限,同時,每個使用者也可以設定一定的資源使用上限以防止資源濫用,而當一個隊列的資源有剩餘時,可暫時将剩餘資源共享給其它隊列。Capacity Scheduler有一下特點:容量保證、靈活性、多重租用、安全保證(ACL)、動态更新配置檔案。
2、Fair Scheduler:已隊列為機關劃分資源,每個隊列設定一定比例的最低保證和上限,同Capacity·一樣,不同之處主要展現在一下方面:資源公平共享、排程政策配置靈活、提高小應用程式響應時間、應用程式在隊列間轉移。Fail Scheduler沒有采用百分比表示資源,取而代之的是實際資源數量。
可以基于節點的标簽排程,及資源強占排程
五、YARN的資源隔離
CPU隔離機制
六、以YARN為核心的生态系統
YARN之上可以運作各種應用類型架構,包括離線計算架構MapReduce、實時計算架構Strom、DAG計算架構Tez等,真正實作了一個叢集多用途,這樣的叢集我們成為輕量級彈性計算平台,說他輕量,是Yarn采用了Cgroups輕量級隔離方案,說它彈性,是因為YARN能夠根據各種計算架構或者應用的負載和需求調整它們各自占用的資源,實作叢集資源共享、資源彈性收縮。
随着YARN朝着資源管理系統方向更好的發展,最終Web Server、Mysql Server這種長服務,均可部署到YARN之上,這樣,Yarn将變為一個服務統一部署和管理平台,最終形成一個以Yarn為核心的生态系統。
資源管理系統Mesos:設計動機是解決程式設計模型和計算架構在多樣化環境下,不同架構建的資源隔離和共享問題,盡管它的設計動機和YARN稍有不同,但架構和實作政策與YARN相似,目前使用Mesos的公司有Twitter、豆瓣等。
資源管理系統架構演變:集中式架構(MRv1 JobTracker)、雙層排程架構(YARN、Mesos)、共享狀态架構(Omega)。