根据MapReduce on YARN初识YARN架构
YARN简介:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。
YARN架构:
ResourceManager(RM)
RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
NodeManager(NM)
NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。
ApplicationMaster(AM)
用户提交的每个应用程序均包含一个AM,主要功能包括:
与RM调度器协商以获取资源(用Container表示);
将得到的任务进一步分配给内部的任务(资源的二次分配);
与NM通信以启动/停止任务;
监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
注:RM只负责监控AM,在AM运行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完成。
Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
MapReduce on YARN:
- 客户端(client)向资源管理者(ResourceManager)发出命令请求
- 资源管理者(ResourceManager)接收到请求后,集群的应用管理者(ApplicationsMagager)会告诉节点管理者(NodeManager)去创建节点应用管理者(MR ApplicationMaster)
- 节点应用管理者(MR ApplicationMaster)创建完成之后会告诉资源管理者(ResourceManager)自己已经创建完毕并注册,同时向资源调度者(ResourceScheduler)申请资源。
- 资源调度者(ResourceScheduler)将资源分配给节点应用管理者(MR ApplicationMaster),节点应用管理者(MR ApplicationMaster)告诉节点管理者(NodeManager)去启动Map任务(MapTask)和Reduce任务(ReduceTask)。
- Map任务(MapTask)和Reduce任务(ReduceTask)将执行的结果反馈给节点应用管理者(MR ApplicationMaster)
- 节点应用管理者(MR ApplicationMaster)将执行的结果反馈给集群的应用管理者(ApplicationsMagager)
- 客户端(client)可以通过浏览器访问节点的应用管理者(MR ApplicationMaster)去监控Map任务(MapTask)和Reduce任务(ReduceTask)的执行情况。