YARN简介:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。
YARN架构:
ResourceManager(RM)
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
NodeManager(NM)
ApplicationMaster(AM)
用户提交的每个应用程序均包含一个AM,主要功能包括:
与RM调度器协商以获取资源(用Container表示);
将得到的任务进一步分配给内部的任务(资源的二次分配);
与NM通信以启动/停止任务;
监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
注:RM只负责监控AM,在AM运行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完成。
Container
- 客户端(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)的执行情况。