YARN最初设计是为了解决Hadoop中MapReduce计算框架中的资源管理问题,但如今它已是一个更加通用的资源管理系统,能够把MapReduce计算框架做为一个应用程序运行在YARN系统之上,经过YARN来管理资源。html
若是你的应用程序也须要借助YARN的资源管理功能,你也能够实现YARN提供的API,将应用程序运行于YARN之上,资源分配与回收统一交给YARN去管理,能够大大简化资源管理功能的开发。apache
当前,也有不少应用程序已经能够构建于YARN之上,如Storm、Spark等计算框架。网络
YARN Client提交Application到ResourceManager,它会首先建立一个Application上下文件对象,并设置ApplicationMaster必需的资源请求信息,而后提交到ResourceManager。YARN Client也能够与RM通讯,获取到一个已经提交并运行的Application的状态信息等,具体详见后面ApplicationClientProtocol协议的分析说明架构
ResourceManager是YARN集群的Master,负责管理整个集群的资源和资源分配。框架
ResourceManager做为集群资源的管理和调度的角色,若是存在单点故障,则整个集群的资源都没法使用。oop
NodeManager是集群中实际拥有实际资源的工做节点,主要负责启动应用所需的容器,监控资源的使用状况并将之汇报给调度器。Client提交Job之后,会将组成Job的多个Task调度到对应的NodeManager上进行执行。spa
ApplicationsManager:负责接收做业,协商获取第一个容器用于执行ApplicationMaster和提供重启失败ApplicationMaster container的服务。架构设计
ApplicationMaster:负责同调度器协商以获取合适的容器,并跟踪这些容器的状态和监控其进度。设计
Container:容器中封装了机器资源,如内存,CPU, 磁盘,网络等,每一个任务会被分配一个容器,该任务只能在该容器中执行,并使用该容器封装的资源。orm
参考资料:
[0] MapReduce NextGen aka YARN aka MRv2
http://hadoop.apache.org/docs/r2.7.0/hadoop-yarn/hadoop-yarn-site/index.html
[1] Hadoop YARN架构设计要点