MapReduce在yarn中的执行过程

    在MapReduce工作原理简介中我简单的了解了MapReduce的工作原理,在这篇文章中,我们将要了解MapReduce的执行过程。我们知道从Hadoop2.X,采用的是yarn作为资源管理系统,我们将要了解MapReduce在yarn中的执行过程。同样,对于yarn,网上有很多大神的写的博客,这里我主要是结合自己的理解,对知识进行积累。

1.概念名词简介

    yarn是资源管理系统,采用的是Master/slave结构,不仅可以运行MapReduce应用,还可以运行Spark,Storm等应用,具有很好的扩展性,主要组件包ResouceManager,NodeManager,ApplicationMaster和container等。

ResourceManager               (RM)作为集群的全局资源管理器,一个集群一个,负责整个集群的资源管理和分配,监控ApplicationMaster的运行情况以及NodeManager的资源情况,想当于Master节点。
NodeManager (NM)负责集群中每个节点的资源以及使用,运行任务,相当于Slave节点。
ApplicationMaster (AM)对集群中的某个应用程序进行管理,向RM(ResourceManager)申请资源以及分配监控任务。
container 资源单位,包括cpu,内存等,不同于mrv1中slot,它是动态资源,而原来是事先程序员定好的,比如某个节点的map slot和reduce slot都是固定的,影响了集群的使用。
RPC

Remote Procedure Call,yarn中各个组件间的通信采用的是rpc机制

application  我们提交给yarn需要运行的应用程序                                                                        
task 为了完成application,需要完成多个任务,任务包括map task和reduce task
这里有几点需要注意:

1)RM主要对资源进行管理以及分配,不负责task,但是会监控AM的运行情况,如果AM运行失败,会重新分配container,重启AM。

2)NM负责该节点容器的资源使用情况,不监控task。

3)AM主要申请资源,然后分配任务给相应的NM,同时监控task的运行情况,如果任务失败,那么重新申请资源,在新的container中运行task

3)我们提供jar包运行MapReduce,其中应用作业的配置文件,jar包等都是通过hdfs分配到各个节点的。

2.运行过程

以下的图是结合大神的博客以及自己理解,自己画的,可能与官方文档有些出入,主要是为了便于自己的理解。


1)首先客户端提交运用程序给yarn的RM

2)RM接受到应用程序后,为其在一个NM node中分配第一个container,并于对应的NM通信,令其在container中创建该应用的AM。

3)AM创建后,马上在RM中进行注册,注册后使得RM能够监控AM的运行情况。AM开始运行应用程序,为其对应的各个task(可以理解成应用程序拆解成各个task运行)向RM申请资源container,其中map task的优先级高于reduce task。

4)申请到资源后,AM与NM通信。

5)AM让NM在container中启动对应的task,并且监控task的运行情况。

以上便是MapReduce在yarn中运行过程,当程序运行结束后,AM向RM注销自己,停止应用,同时container中task和AM都清空。


猜你喜欢

转载自blog.csdn.net/sinat_27634939/article/details/80151825