ResourceManager主要有四種功能:1.處理來自client的請求
2.啓動和監控ApplicationMaster
3.監控NodeManager
4.集羣中資源的分配和調度
ResourceManager主要由以下幾個部分組成:
用戶交互
YARN分別針對普通用戶,管理員和Web提供了三種對外服務,分別對應ClientRMService、AdminService和WebApp:
ClientRMService
ClientRMService是爲普通用戶提供的服務,它會處理來自客戶端各種RPC請求,比如提交應用程序、終止應用程序,獲取應用程序運行狀態等。
AdminService
YARN爲管理員提供了一套獨立的服務接口,以防止大量的普通用戶請求使管理員發送的管理命令餓死,管理員可通過這些接口管理集羣,比如動態更新節點列表,更新ACL列表,更新隊列信息等。
WebApp
爲了更加友好地展示集羣資源使用情況和應用程序運行狀態等信息,YARN對外提供了一個Web 界面,這一部分是YARN仿照haml(http://haml.info/)開發的一個輕量級嵌入式Web框架。具體討論見:https://issues.apache.org/jira/browse/MAPREDUCE-2399
NM管理
NMLivelinessMonitor
監控NM是否活着,如果一個NodeManager在一定時間(默認爲10min)內未彙報心跳信息,則認爲它死掉了,會將其從集羣中移除。
NodesListManager
維護正常節點和異常節點列表,管理exlude(類似於黑名單)和inlude(類似於白名單)節點列表,這兩個列表均是在配置文件中設置的,可以動態加載。
ResourceTrackerService
處理來自NodeManager的請求,主要包括兩種請求:註冊和心跳,其中,註冊是NodeManager啓動時發生的行爲,請求包中包含節點ID,可用的資源上限等信息,而心跳是週期性 行爲,包含各個Container運行狀態,運行的Application列表、節點健康狀況(可通過一個腳本設置),而ResourceTrackerService則爲NM返回待釋放的Container列表、Application列表等。
AM管理
AMLivelinessMonitor
監控AM是否活着,如果一個ApplicationMaster在一定時間(默認爲10min)內未彙報心跳信息,則認爲它死掉了,它上面所有正在運行的Container將被認爲死亡,AM本身會被重新分配到另外一個節點上(用戶可指定每個ApplicationMaster的嘗試次數,默認是1次)執行。
ApplicationMasterLauncher
與NodeManager通信,要求它爲某個應用程序啓動ApplicationMaster。
ApplicationMasterService
處理來自ApplicationMaster的請求,主要包括兩種請求:註冊和心跳,其中,註冊是ApplicationMaster啓動時發生的行爲,包括請求包中包含所在節點,RPC端口號和tracking URL等信息,而心跳是週期性 行爲,包含請求資源的類型描述、待釋放的Container列表等,而AMS則爲之返回新分配的Container、失敗的Container等信息。
Application管理
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/
作者:Dong,作者介紹:http://dongxicheng.org/about/