Yarn初探

268 阅读3分钟

什么是yarn?

yarn(yet another resource nevogiator)另一种资源协调器。是一种基于Cgroups底层资源隔离机制的集群资源调度器。常用在分布式集群资源任务的调度与协调上。

yarn中的角色分配

1.Resource Manager:一个集群中唯一的资源最高协调者。对于资源而言,可抽象为CPU,内存,磁盘,网络带宽等。这些实际上就是硬件计算机上的通用资源。因此,底层是基于Cgroups这种轻量级资源隔离机制的,同样使用此机制的还有docker容器,本质上,两者都是一种对于资源的管控和分配。整体而言,对于一个计算机或者一个计算机集群来说,就是一个总的容器资源的协调。然而,对于资源的定义,目前来说是上述几种,但是实际上还可以是一些其他的资源,如GPU,如资源块等协调分配。


2.Node Manager:节点管理者。是一个集群中的某些个具体的物理节点单位。简言之,如果一个五个节点的集群分布在五台物理节点上,那么Node Manager就是管控着每个物理节点上的一个逻辑节点。当然,如果一个物理机上分布N个节点,那么Manager就管控N个同个物理节点上的节点。


3.Application Master:应用管理者,是一个申请应用的逻辑上下文协调者。它不是真正的调度者,是一种逻辑上的资源代理,它上层面向具体的客户端应用,下层面向Resource Manager和Node Manager,包括资源预留,资源分配,资源协调等操作。


4.Application Attempt:应用重试机制。对于一个资源管理机制来说,资源竞争和失败处理是不可避免的问题,它主要负资源异常和任务异常时的处理。


yarn的处理过程

1、用户向YARN提交程序,以Map Reduce程序为例,Resource Manager(资源管理器)接收到客户端程序的运行请求

2、Resource Manager分配一个Container(资源)用来启动Application Master(程序管理员),并告知Node Manager(节点管理员),要求它在这个Container下启动Application Master

3、Application Master启动后,向Resource Manager发起注册请求

4、Application Master向Resource Manager申请资源

5、取得资源后,根据资源,向相关的Node Manager通信,要求其启动程序

6、Node Manager(多个)启动MR(每个MR任务都是一个job,可以在job日志中查看程序运行日志)

7、Node Manager不断汇报MR状态和进展给Application Master

8、当MR全部完成时,Application Master向Resource Manager汇报任务完成,并注销自己

例子:https://www.jianshu.com/p/3f406cf438be

什么是Cgroups?

Cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。简单说,cgroups 可以限制、记录任务组所使用的物理资源。本质上来说,cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。