YARN是一个资源管理、任务调度的框架,主要包含三大模块:
- ResourceManager(RM):负责所有资源的监控、分配和管理
- NodeManager(NM):负责每一个节点的维护
- ApplicationMaster(AM): 负责每一个具体应用程序的调度和协调
对于所有的applications,RM拥有绝对的控制权和对资源的分配权。
每个AM会和RM协商资源,同时和NodeManager通信来执行和监控task。几个模块之间的关系如图所示。
ResourceManager
- ResourceManager负责整个集群的资源管理和分配,是一个全局的资源管理系统。
- NodeManager以心跳的方式,向ResourceManager汇报资源使用情况(目前主要是CPU和内存的使用情况)。
RM只接受NM的资源回报信息,对于具体的资源处理则交给NM自己处理。 - YARN Scheduler根据application的请求为其分配资源,不负责application job的监控、追踪、运行状态反馈、启动等工作。