本文会首先介绍Yarn上如何支持MapReduce编程模型,然后再阐述在Yarn上构建的编程模型和运行时环境的方法,最后总结使用Yarn构建分布式系统的一些高级特性。
Yarn支持MapReduce编程模型
Hadoop1.0版本支持MapReduce编程模型的方式
下面以一个作业的生命周期为主线,介绍Hadoop1.0运行时环境如何支持一个MR作业的执行。
(1)
(2)
(3)
总结一下,Hadoop1.0使用JobInProgress和JobTracker维护的作业和任务的状态解析MapReduce作业,MapReduce编程模型被紧耦合在运行时环境中。
Yarn支持MapReduce编程模型的方式
Yarn是支持编程模型可扩展的分布式资源平台。Yarn维护NM节点内资源的状态信息,负责NM节点资源的申请与释放,Yarn以Container为资源分配和使用的基本单位,配置资源使用的阈值,保证资源使用不越界。Yarn中提交的每一个作业对应一个Application,在RM-NM中创建AM执行作业逻辑控制,维护整个作业生命周期内任务的调度、资源申请等操作。MapReduce的AM实例由org.apache.hadoop.mapreduce.v2.app.MRAppMaster类来指定。它的启动过程和一般的ApplicationMaster启动过程类似,如下图所示。
MR作业生命周期内,MRAppMaster负责作业的管理工作,执行流程如下图所示。
上图经过TaskAttempt一旦分配到Container,会在Container内启动MapTaskImpl或者ReduceTaskImpl,从而启动map、reduce过程。至此,Yarn就可以支持MapReduce编程模型了。
| Hadoop1.0 | Hadoop-Yarn |
调度过程 | TT-JT心跳互联,JobClient提交作业,通过JobInProgress和TaskScheduler,完成任务与TT匹配和启动。 | org.apache.hadoop.mapreduce.v2. app.rm.RMContainerAllocator负责作业内任务和Container的匹配过程。 |
资源单位 | Slot | Container |
整体执行流程 | 中心控制模式 | 状态机模式 |
转自: http://blog.sina.com.cn/s/blog_4a1f59bf01014b83.html