Hadoop生態之Yarn知識點總結

一、簡介

YARN(Yet Another Resource Negotiator)是一個通用的資源管理平臺,可爲各類計算框架提供資源的管理和調度。 
其核心出發點是爲了分離資源管理與作業調度/監控,實現分離的做法是擁有一個全局的資源管理器(ResourceManager,RM),以及每個應用程序對應一個的應用管理器(ApplicationMaster,AM),應用程序由一個作業(Job)或者Job的有向無環圖(DAG)組成。

YARN可以將多種計算框架(如離線處理MapReduce、在線處理的Storm、迭代式計算框架Spark、流式處理框架S4等) 部署到一個公共集羣中,共享集羣的資源。並提供如下功能:

  • 資源的統一管理和調度: 
    集羣中所有節點的資源(內存、CPU、磁盤、網絡等)抽象爲Container。計算框架需要資源進行運算任務時需要向YARN申請Container, YARN按照特定的策略對資源進行調度進行Container的分配。

  • 資源隔離: 
    YARN使用了輕量級資源隔離機制Cgroups進行資源隔離以避免相互干擾,一旦Container使用的資源量超過事先定義的上限值,就將其殺死。

二、Yarn結構體系

 

1 RM(ResourceManager) + N NM(NodeManager)

ResourceManager

         1)處理客戶端的請求(啓動/殺死)
         2)啓動/監控ApplicationMaster(一個作業對應一個AM)
         3)監控NM
         4)系統的資源分配和調度

           一個集羣active狀態的RM只有一個,負責整個集羣的資源管理和調度

NodeManager

         1)定期向RM彙報本節點的資源使用請求和各個Container的運行狀態
         2)接收並處理RM的container啓停的各種命令
         3)單個節點的資源管理和任務管理

         整個集羣中有N個,負責單個節點的資源管理和使用以及task的運行情況

ApplicationMaster

         1)數據切分
         2)爲應用程序向RM申請資源(container),並分配給內部任務
         3)與NM通信以啓停task, task是運行在container中的
         4)task的監控和容錯

         每個應用/作業對應一個,負責應用程序的管理

Container

         對任務運行情況的描述:cpu、memory、環境變量

YARN執行流程

         1)用戶向YARN提交作業
         2)RM爲該作業分配第一個container(AM)
         3)RM會與對應的NM通信,要求NM在這個container上啓動應用程序的AM
         4)  AM首先向RM註冊,然後AM將爲各個任務申請資源,並監控運行情況
         5)AM採用輪訓的方式通過RPC協議向RM申請和領取資源
         6)AM申請到資源以後,便和相應的NM通信,要求NM啓動任務
         7)NM啓動我們作業對應的task

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