在YARN中,ResourceManager負責集羣中全部資源的統一管理和分配,它接收來自各個節點(NodeManager)的資源彙報信息,並把這些信息按照必定的策略分配給各個應用程序(其實是ApplicationManager)。apache
ResourceManager主要由如下幾個部分組成:安全
YARN分別針對普通用戶,管理員和Web提供了三種對外服務,分別對應ClientRMService、AdminService和WebApp:框架
ClientRMServiceoop
ClientRMService是爲普通用戶提供的服務,它會處理來自客戶端各類RPC請求,好比提交應用程序、終止應用程序,獲取應用程序運行狀態等。spa
AdminServicecode
YARN爲管理員提供了一套獨立的服務接口,以防止大量的普通用戶請求使管理員發送的管理命令餓死,管理員可經過這些接口管理集羣,好比動態更新節點列表,更新ACL列表,更新隊列信息等。orm
WebAppblog
爲了更加友好地展現集羣資源使用狀況和應用程序運行狀態等信息,YARN對外提供了一個Web 界面,這一部分是YARN仿照haml(http://haml.info/)開發的一個輕量級嵌入式Web框架。具體討論見:https://issues.apache.org/jira/browse/MAPREDUCE-2399接口
NMLivelinessMonitor隊列
監控NM是否活着,若是一個NodeManager在必定時間(默認爲10min)內未彙報心跳信息,則認爲它死掉了,會將其從集羣中移除。
NodesListManager
維護正常節點和異常節點列表,管理exlude(相似於黑名單)和inlude(相似於白名單)節點列表,這兩個列表均是在配置文件中設置的,能夠動態加載。
ResourceTrackerService
處理來自NodeManager的請求,主要包括兩種請求:註冊和心跳,其中,註冊是NodeManager啓動時發生的行爲,請求包中包含節點ID,可用的資源上限等信息,而心跳是週期性 行爲,包含各個Container運行狀態,運行的Application列表、節點健康情況(可經過一個腳本設置),而ResourceTrackerService則爲NM返回待釋放的Container列表、Application列表等。
AMLivelinessMonitor
監控AM是否活着,若是一個ApplicationMaster在必定時間(默認爲10min)內未彙報心跳信息,則認爲它死掉了,它上面全部正在運行的Container將被認爲死亡,AM自己會被從新分配到另一個節點上(用戶可指定每一個ApplicationMaster的嘗試次數,默認是1次)執行。
ApplicationMasterLauncher
與NodeManager通訊,要求它爲某個應用程序啓動ApplicationMaster。
ApplicationMasterService
處理來自ApplicationMaster的請求,主要包括兩種請求:註冊和心跳,其中,註冊是ApplicationMaster啓動時發生的行爲,包括請求包中包含所在節點,RPC端口號和tracking URL等信息,而心跳是週期性 行爲,包含請求資源的類型描述、待釋放的Container列表等,而AMS則爲之返回新分配的Container、失敗的Container等信息。
ApplicationACLsManager
管理應用程序訪問權限,包含兩部分權限:查看和修改,查看主要指查看應用程序基本信息,而修改則主要是修改應用程序優先級、殺死應用程序等。
RMAppManager
管理應用程序的啓動和關閉。
ContainerAllocationExpirer
YARN不容許AM得到Container後長時間不對其使用,由於這會下降整個集羣的利用率。當AM收到RM新分配的一個Container後,必須在必定的時間(默認爲10min)內在對應的NM上啓動該Container, 不然,RM會回收該Container。
ResourceManage自帶了很是全面的權限管理機制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模塊完成。
ResourceScheduler
ResourceScheduler是資源調度器,它按照必定的約束條件(好比隊列容量限制等)將集羣中的資源分配給各個應用程序,當前主要考慮內存資源,在3.0版本中將會考慮CPU(https://issues.apache.org/jira/browse/YARN-2)。ResourceScheduler是一個插拔式模塊,默認是FIFO實現,YARN還提供了Fair Scheduler和Capacity Scheduler兩個多租戶調度器。
參考資料:
http://hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/
原創文章,轉載請註明: 轉載自董的博客
本文連接地址: http://dongxicheng.org/mapreduce-nextgen/yarnmrv2-resource-manager-infrastructure/