MR1和MR2(Yarn)工作原理流程

本文详细介绍了MapReduce两个版本的工作流程,包括任务提交、初始化、分配、执行及进度更新等环节,对比了MapReduce1和MapReduce2(Yarn)的不同之处。

一、Mapreduce1<?xml:namespace prefix = "o" />

861394-20170423124109413-855528711.jpg

1  MR1工作原理图

工作流程主要分为以下6个步骤:

1 作业的提交

1)客户端向jobtracker请求一个新的作业ID(通过JobTrackergetNewJobId()方法获取,见第2

2)计算作业的输入分片,将运行作业所需要的资源(包括jar文件、配置文件和计算得到的输入分片)复制到一个以ID命名的jobtracker的文件系统中(HDFS)见第3

3)告知jobtracker作业准备执行,见第4

2 作业的初始化

4)JobTracker收到对其submitJob()方法的调用后,会把此调用放入一个内部队列中,交由作业调度器进行调度,并对其初始化,见第5

5)作业调度器首先从共享文件系统HDFS中获取客户端已经计算好的输入分片,见第6

6)为每个分片创建一个map任务和reduce任务,以及作业创建和作业清理的任务。

3 任务的分配

7)tasktracker定期向jobtracker发送心跳,表明自己还活着。见第7

8)jobtrackertasktracker分配任务,对于map任务,jobtracker会考虑tasktracker的网络位置,选取一个距离其输入分片文件最近的tasktracker,对于reduce任务,jobtracker会从reduce任务列表中选取下一个来执行。

4 任务的执行

9)HDFS中把作业的jar文件复制到tasktracker所在的文件系统,实现jar文件本地化,同时,tasktracker将应用程序所需的全部文件从分布式缓存中复制到本地磁盘,见8,并且tasktracker为任务新建一个本地工作目录,并把jar文件的内容解压到这个文件夹下,然后新建一个taskRunner实例运行该任务

10)TaskRunner启动一个新的JVM(见第9)来运行每个任务(见第10)

5 进度和状态的更新

11)任务运行期间,对其进度progress保持追踪。对map进度是已经处理输入所占的比例。对于reduce任务,分三部分,与shuffle的三个阶段相对应。Shuffle是系统执行排序的过程。是mapreduce的心脏。

907283-20160704091200624-1979180957.png

07fbfd9c2049e2c4.png?_=5130136

对于map端而言:每个map任务都有一个环形内存缓冲区,默认是0.8,当缓冲区达到阈值时便开始把内容溢出spill到磁盘,在写入磁盘之前,线程会根据数据最终要传的reducer把数据划分成相应的分区,每个分区中,按键值进行内排序,如果有combine (使结果更紧凑),会在combine完成之后再写入磁盘。

对于reducer端而言,map的输出文件位于tasktracker的本地磁盘,每个map任务完成的时间可能不同,只要有一个完成,就会复制其输出(这就是复制阶段),然后把map的输出进行merge合并,然后直接把数据输入到reduce函数,完成输出。

6 作业的完成

二、Mapreduce2Yarn

861394-20170423132552726-1209437260.png

2 MR2工作原理图

工作流程主要分为以下6步执行:

1 作业的提交

1)、客户端向ResourceManager请求一个新的作业IDResourceManager收到后,回应一个ApplicationID见第2

2)、计算作业的输入分片,将运行作业所需要的资源(包括jar文件、配置文件和计算得到的输入分片)复制到一个(HDFS)见第3

3)、告知ResourceManager作业准备执行,并且调用submitApplication()提交作业,见第4

2 作业的初始化

4)ResourceManager收到对其submitApplication()方法的调用后,会把此调用放入一个内部队列中,交由作业调度器进行调度,并对其初始化,然后为该其分配一个contain容器,见第5

5)、并与对应的NodeManager通信见第5a,要求它在Contain中启动ApplicationMaster见第5b

6)ApplicationMaster启动后,会对作业进行初始化,并保持作业的追踪见第6.

7)ApplicationMasterHDFS中共享资源,,接受客户端计算的输入分片为每个分片。见第7

3 任务的分配

8)ApplicationMasterResourceManager注册,这样就可以直接通过RM查看应用的运行状态,然后为所有的mapreduce任务获取资源,见第8

4 任务的执行

9)ApplicationMaster申请到资源后,与NodeManager进行交互,要求它在Contain容器中启动执行任务。见第9a9b

5 进度和状态的更新

10)、各个任务通过RPC协议umbilical接口向ApplicationMaster汇报自己的状态和进度,方便ApplicationMaster随时掌握各个任务的运行状态。用户也可以向ApplicationMaster查询运行状态。

6 作业的完成

11)、应用完成后,ApplicationMasterResourceManager注销并关闭自己。

 

参考网址:http://www.cnblogs.com/liuzhongfeng/p/6753663.html

转载于:https://www.cnblogs.com/zhangwuji/p/7594728.html

根据以下代码,推导零点极点传递函数离散化过程 MMOVF32 MR2, #3.14159265;;;;如果直接用3.14159265去乘,只有16位浮点精度 MMPYF32 MR1,MR0,MR2; ;;;;PI*T给MR1 || MMOV32 MR3,@_ClatoCpuVar._f32IdcLoopfp;;fp给MR2 MMPYF32 MR1,MR1,MR3 ;PI*T*fp给MR1 || MMOV32 MR3 ,@_ClatoCpuVar._f32IdcLoopfz;;fz给MR3 MMPYF32 MR1,MR1,MR3 ; MR1=PI*T*fp*fz || MMOV32 MR2,@_ClatoCpuVar._f32IdcLoopfz MMOV32 @_ClatoCpuVar._f32IdcSZSPTsfpfzPI,MR1 ;;;;;;;;;;;;;计算1/(PI*T*fp*fz+fz);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;浮点数除法,用两次牛顿迭带;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MADDF32 MR1,MR2,MR1 ;;;MR1=PI*T*fp*fz+fz MEINVF32 MR2, MR1 ; MR2 = Ye = Estimate(1/Den) MMPYF32 MR3, MR2, MR1 ; MR3 = Ye*Den MSUBF32 MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den MMPYF32 MR2, MR2, MR3 ; MR2 = Ye = Ye*(2.0 - Ye*Den) MMPYF32 MR3, MR2, MR1 ; MR3 = Ye*Den MSUBF32 MR3, #2.0, MR3 ; MR3 = 2.0 - Ye*Den MMPYF32 MR2, MR2, MR3 ; MR2 = Ye = Ye*(2.0 - Ye*Den);MR2=1/(PI*T*fp*fz+fz ) || MMOV32 MR1,@_ClatoCpuVar._f32IdcSZSPTsfpfzPI ;;;;;;;;;;;;;;;;;;计算SZSP的K1,K2,K3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MMOV32 MR3,@_ClatoCpuVar._f32IdcLoopfp MADDF32 MR0,MR1,MR3 MMPYF32 MR0,MR0,MR2 MMOV32 @_ClatoCpuVar._f32IdcLoopFilterK2,MR0 MSUBF32 MR0,MR1,MR3 MMPYF32 MR0,MR0,MR2 MMOV32 @_ClatoCpuVar._f32IdcLoopFilterK3,MR0 MSUBF32 MR0,#1.0,MR0 MMOV32 MR3,@_ClatoCpuVar._f32IdcLoopFilterK2 MSUBF32 MR0,MR0,MR3 || MMOV32 MR1,@_ClatoCpuVar._f32DcdcPWMTs MMOV32 @_ClatoCpuVar._f32IdcLoopFilterK1,MR0 ;;;;;;;;;;;;;;;;;计算SZSP的K1,K2,K3 END;;;;;
最新发布
12-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值