5.2 Yarn架构
YARN 总体上是 Master/Slave 结构,主要由 ResourceManager、NodeManager、 ApplicationMaster 和 Container 等几个组件构成。
ResourceManager(RM)
ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。NodeManager 以心跳的方式向 ResourceManager 汇报资源使用情况(目前主要是 CPU 和内存的使用情况)。ResourceManager 只接受NodeManager 的资源回报信息,对于具体的资源处理则交给 NodeManager 自己处理。ResourceManager 中的YARN Scheduler 组件根据 application 的请求为其分配资源,不负责具体job的监控、追踪、运行状态反馈、启动等工作。
NodeManager (NM) NodeManager 是每个节点上的资源和任务管理器。它会定时地向 ResourceManager 汇报本节点上的资源使用情况和各个 Container 的运行状态;同时会接收并处理来自 ApplicationMaster 的 Container 启动/停止等请求。
ApplicationMaster (AM): 用户提交的应用程序均包含一个 ApplicationMaster,负责应用的监控,跟踪应用执行状态,重启失败任务等。ApplicationMaster 是应用框架,它负责向 ResourceManager 协调资源,并且与 NodeManager 协同工作完成 Task的执行和监控。
Container: Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当ApplicationMaster 向 ResourceManager 申请资源时,ResourceManager 为 ApplicationMaster 返回的资源便是用Container 表示的。