Yarn三大组件介绍
ResourceManager
- ResourceManager负责整个集群的资源管理和分配,是一个全局的资源管理系统。
- NodeManager以心跳的方式向ResourceManager汇报资源使用情况(目前主要是CPU和内存的使用情况)。ResourceManager只接受NodeManager的资源回报信息,对于具体的资源处理则交给NodeManager自己处理。
- ResourceManager中的YARN Scheduler组件根据application的请求为其分配资源,不负责具体job的监控、追踪、运行状态反馈、启动等工作。
NodeManager
- NodeManager是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。YARN集群每个节点都运行一个NodeManager。
- NodeManager定时向ResourceManager汇报本节点资源(CPU、内存)的使用情况和Container的运行状态。当ResourceManager宕机时NodeManager自动连接ResourceManager备用节点。
- NodeManager接收并处理来自ApplicationMaster的Container启动、停止等各种请求。
ApplicationMaster
- 用户提交的每个应用程序均包含一个ApplicationMaster,它可以运行在ResourceManager以外的机器上。
- 负责与ResourceManage调度器协商以获取资源(用Container表示)。
- 将得到的任务进一步分配给内部的任务(资源的二次分配)。
- 与NodeManager通信以启动/停止任务。
- 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。