Yarn的基本思想:将JobTracker的资源管理和调度监控两大职能,拆分成两个独立的进程:ResourceManager、ApplicationMaster。
ResourceManager和每个节点的NodeManager组成全新的通用操作系统,以分布式的方式管理应用程序。
ResourceManager
由两个组件构成:调度器(scheduler)、应用管理器(ApplicationManager)。
1、调度器
将系统中的资源分配给各个正在运行的应用。
是一个纯粹的调度器,不负责与具体应用相关的工作,也不复杂重启失败的任务。
Container:调度器根据各应用的资源需求,将内存、CPU、磁盘、网络等资源封装为一个Container,以限制任务使用的资源量。
2、应用管理器
负责管理整个系统的所有应用。启动、监控、重启ApplicationMaster。
ApplicationMaster
与ResourceManager协商资源。
与NodeManager合作,在Container中运行、监控任务。
在Container出现故障时,重新申请资源。
计算应用所需资源,转化为ResourceManager可识别的协议信息包。
ApplicationMaster故障是,应用管理器负责重启它,它自己恢复应用。
NodeManager
为应用启用调度器,以便分配Container。
确保Container不使用超出分配的资源。
为任务构建Container环境。
为所在节点提供一个管理本地存储资源的简单服务。
Resource Request
<资源名称,优先级,资源需求,Container数>
Container
本质上是一种资源分配形式,是ResourceManager为Resource Request成功分配资源的结果。
Container只有使用NodeManager指定的资源的权力,Application Master必须向NodeManager提供更多信息来启动Container。
Yarn工作流程
1、客户端提交MapReduce任务。
2、Yarn的ResourceManager协调资源分配。
3、Yarn的NodeManager负责启动和监控Container。
4、ApplicationMaster负责协调MapReduce任务,它和MapReduce任务在Container中运行,这些Container由ResourceManager分配,由NodeManager管理。
5、HDFS用来与其他实体间共享文件。