在MapReduce工作原理简介中我简单的了解了MapReduce的工作原理,在这篇文章中,我们将要了解MapReduce的执行过程。我们知道从Hadoop2.X,采用的是yarn作为资源管理系统,我们将要了解MapReduce在yarn中的执行过程。同样,对于yarn,网上有很多大神的写的博客,这里我主要是结合自己的理解,对知识进行积累。
1.概念名词简介
yarn是资源管理系统,采用的是Master/slave结构,不仅可以运行MapReduce应用,还可以运行Spark,Storm等应用,具有很好的扩展性,主要组件包ResouceManager,NodeManager,ApplicationMaster和container等。
这里有几点需要注意:
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都清空。