MapReduce执行过程详解(重点)

MapReduce执行过程

分析MapReduce执行过程

MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。

Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中。整个流程如图所示

在这里插入图片描述

Mapper任务的执行过程详解

每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出。整个Mapper

任务的处理过程又可以分为以下几个阶段,如图所示

在这里插入图片描述

上图中,Mapper任务的运行过程分为六个阶段。

1.把输入文件按照一定的标准分片,每一个输入片由一个Mapper进程处理。

2.对输入片中的记录按照一定规律解析成键值对。健是每个行的起始位置,值是本行的文本内容

3.上阶段解析出来的每一个键值对,调用一次map()方法输出新的键值对

4.按照规则对第三阶段输出的键值对进行分区

5.对每个分区的键值进行排序,然后直接输出到本地linux文件中

Reducer任务的执行过程详解

每个Reducer任务是一个java进程。Reduce任务接收Mapper任务的输出,归纳处理后写入到HDFS中,分为如下图所示的几个阶段

在这里插入图片描述

1.Reduce任务主动从Mapper任务中复制其输出的键值对。

2.把复制下来的本地数据全部合并,即把分散的数据合并成一个大的数据。再对合并后的数据进行排序

3.对排序后的键值对调用Reduce方法。键相等的键值对调用一次Reduce方法,最后把输出的键值写入到HDFS文件中

键值对的编号

在对Mapper任务、Reduce任务的分析过程中,出现多次键值对,容易混淆

所以对键值对进行分别编号,方便大家理解键值对的变化情况,如下图所示

在这里插入图片描述

对于Mapper任务输入的键值对,定义为k1,v1

对于map方法处理后输出的键值对,定义为k2,v2

对于reduce方法接收k2,v2处理后输出的键值对,定义为k3,v3

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值