学习Hadoop——继上一篇YARN 组件

Resource Manager 

Resource Manager 是一个全局资源管理器,负责整个系统的资源管理和分配。主要由两个组件构成:调度器(Scheduler) 

应用程序管理器(Application Manager) 

1.调度器

 调度器根据容量,队列等限制条件(比如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源管理

分配给各个正在运行的应用程序。需要注意的是,该调度器时"纯调度器" ,它不再从事任何与具体应用程序相关的工作,比

如它不负责监控或者跟踪应用执行状态等,也不负责重新启动因执行失败或者硬件故障导致的失败任务,这些工作均由应用

程序相关的Application Master 完成。调度器仅根据各个程序的资源需求进行资源分配,而资源分配单位用一个抽象概念"资

源容器"来表示。Contaioner 是一个动态资源分配单位,它将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务

得使用量。此外,该调度器时可插拔的组件,用户可以根据自己需要设计新的调度器。

2.应用程序管理

应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、调度器协商资源以启动Application Master 、监控

Application Master 运行状态并在失败时重新启动它等。

Aplication Master 

用户提交的每个应用程序均包含一个AM,其功能包括:

1.与RM 调度器协商以获取资源(用Contain 表示):

2.将得到的任务进一步分配内部的任务(资源二次分配):

3.与NM通信以启动/停止任务

4.监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务

 当前YARN 自带了两个AM 实现,一个用于演示AM 编写方法的实例程序 distributedshell,它可以申请一定数目的Container

以运行一个shell 命令或者shell脚本,另一个是运行Mapreduce 应用程序的AM-MRAppMaster

RM 只负责监控AM,在AM运行失败时候启动它,RM并不负责AM 内部任务的容错,该功能由AM自己来完成。

NodeManager

Node Manager 是每个节点上的资源和任务管理器,一方面,它会定时地向RM 汇报节点上的资源使用情况和各个Container 

运行状态;另一方面,它接收并处理来自AM 的Container

Container

 Container 是YARN 中的资源抽象,它封装了某个节点上的多维度资源,比如内存,资源,磁盘,网络等,当AM向RM申请资

源时,RM为AM返回的资源是用Container表示。YARN会为每个任务分配一个Container,且该任务使用Container 中描述的资

源。

说明:1.Container 不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。

           2.现在YARN 仅支持CPU和内存两种资源,且使用轻量级资源隔离机制Cgroup进行资源隔离。

YARN的资源管理和执行框架都是按照主/从范式实现的,Slave上的节点管理器(NM)管理监控每个节点,并向集群的Master上的

资源管理器(RM)报告资源的可用性状态,资源管理器最终为系统里所有应用程序分配资源。

特定应用的执行由Application Master控制,Application Master 负责将一个应用分割成多个任务,并和资源管理器协调其执行所需

的资源,资源一旦分配好,Application Master 就和Node Manager 一起安排,执行,监控独立的应用任务。

这里需要说明的是,YARN不同的服务组件的通信方式分别采用了事件驱动的异步并发机制,这样可以简化系统的设计。

一个job的处理过程

下面说一下一个job提交后的处理过程:

1.client提交一个job到RM,进入RM中的Scheduler 队列供调度

2.RM根据NM汇报情况(NM会汇报资源和container 使用情况),请求一个合适的NM launch container,以启动运行AM

3.AM启动后,注册到RM上,以使得client可以查看AM的信息,便于client 直接和AM通信。

4. AM启动后,根据job相关的split的task情况,会和RM协商container 资源

5.RM分配给AM container 资源后,会根据container 的信息,向对应的NM请求launch container

6.NM 启动container 运行task,运行过程中向AM汇报进度状态信息,类似于MRv1中task的汇报,同时NM也会定时地向RM汇报

  container的使用情况

7.在application(job)执行过程中,client可以和AM通信,以获取application 相关进度信息

8.在application(job)完成后,AM通知通知RM清除自身相关信息并关闭,释放所占container

YARN 设计目标:
      1.通用的统一资源管理系统(同时运行长应用程序和短应用程序)
      2.长应用程序(通常情况下,永不停止运行的程序:service,HTTPserver)
      3.短应用程序(短时间内:秒级,分钟级,小时级,内会运行结束的程序,MRjob, Spark job等)

猜你喜欢

转载自blog.csdn.net/y805805/article/details/85877052
今日推荐