YARN定义:全称为Yet Anaother Resource Negotiator,是一套全新的任务调度和资源管理框架,是Hadoop2的关键组件之一。
不同于Hadoop1,YARN不仅支持MapReduce,还支持各种计算引擎,是一个通用的资源管理器。
YARN也是典型的Master-Slave架构,Master称为ResourceManager(RM),Slave称为NodeManger(NM)。
RM负责接收用户提交的任务,并且决定为任务分配多少资源和调度到哪个NM去执行;NM是真正执行任务的节点,周期性的像RN汇报自己的资源使用状况并领取RM分配的任务,负责启动和停止任务相关的进程等工作。
工作机制
1.用户使用客户端向RM提交一个任务,同时制定提交到那个队列和需要多少资源。用户可以通过每个计算引擎的对应参数设置,如果没有特别指定,则使用默认设置。
2.RM在收到任务提交的请求后,先根据资源和队列是否满足要求选择一个NM,通知他启动一个特殊的container,称为ApplicationMaster(AM),后续流程由他发起。
3.AM向RM注册后根据自己任务的需要,向AM通知NM启动container,包括数量,所需资源量,所在位置等因素。
4.如果队列有足够资源,RM会将container分配给有足够剩余资源的NM,由AM通知给NM启动container。
5.container启动后执行具体的任务,处理分给自己的数据。NM除了负责启动container,还负责监控它的资源使用状况以及是否失败退出等工作,如果container实际使用的内存超过申请时指定的内存,会将其杀死,保证其他container能正常进行。
6.各个container向AM汇报自己的速度,都完成后,AM向RM注销任务并退出,RM通知NM杀死对应的container,任务结束。