根据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:
 
  1. 客户端(client)向资源管理者(ResourceManager)发出命令请求
  2. 资源管理者(ResourceManager)接收到请求后,集群的应用管理者(ApplicationsMagager)会告诉节点管理者(NodeManager)去创建节点应用管理者(MR ApplicationMaster)
  3. 节点应用管理者(MR ApplicationMaster)创建完成之后会告诉资源管理者(ResourceManager)自己已经创建完毕并注册,同时向资源调度者(ResourceScheduler)申请资源。
  4. 资源调度者(ResourceScheduler)将资源分配给节点应用管理者(MR ApplicationMaster),节点应用管理者(MR ApplicationMaster)告诉节点管理者(NodeManager)去启动Map任务(MapTask)和Reduce任务(ReduceTask)。
  5. Map任务(MapTask)和Reduce任务(ReduceTask)将执行的结果反馈给节点应用管理者(MR ApplicationMaster)
  6. 节点应用管理者(MR ApplicationMaster)将执行的结果反馈给集群的应用管理者(ApplicationsMagager)
  7. 客户端(client)可以通过浏览器访问节点的应用管理者(MR ApplicationMaster)去监控Map任务(MapTask)和Reduce任务(ReduceTask)的执行情况。
 
 
 
 

 

posted @ 2018-02-02 11:14  LCode丶  阅读(199)  评论(0编辑  收藏  举报