大数据之MapReduce框架流程介绍

本文深入介绍了MapReduce的输入输出特点及执行流程。MapReduce以<key, value>对处理数据,输入数据经过逻辑切片、解析、Mapper处理、分区和排序,可能经过Combiner局部聚合,然后Reducer进行数据聚合并输出最终结果。重点在于自定义map和reduce函数。" 50752940,810043,EFI Timer机制详解,"['EFI', 'BIOS', 'x86', '中断处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

#博学谷IT学习技术支持#
上篇文章主要对MapReduce做一个入门级介绍,本篇文章接着对MapReduce的其他知识点进行更加深入的梳理。

一、MapReduce输入和输出梳理

MapReduce框架运转在<key,value>键值对上,也就是说,框架把作业的输入看成是一组<key,value>键值对,同样也产生一组<key,value>键值对作为作业的输出,这两组键值对可能是不同的。
在这里插入图片描述
在这里插入图片描述

(一)输入特点

默认读取数据的组件叫做TextInputFormat,读取路径主要有以下两个知识点:

  • 如果指向的是一个文件 处理该文件
  • 如果指向的是一个文件夹(目录) 就处理该目录所有的文件 当成整体来处理

(二)输出特点

默认输出数据的组件叫做TextOutputFormat,输出路径不能提前存在 否则执行报错 对输出路径进行检测判断

二、MapReduce流程简单梳理

(一)执行流程图

在这里插入图片描述

(二)Map阶段执行流程

  1. 第一阶段是把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认情况下,Split size = Block size。每一个切片由一个MapTask处理。(getSplits)
  2. 第二阶段是对切片中的数据按照一定的规则解析成<key,value>对。默认规则是把每一行文本内容解析成键值对。key是每一行的起始位置(单位是字节),value是本行的文本内容。(TextInputFormat)
  3. 第三阶段是调用Mapper类中的map方法。上阶段中每解析出来的一个<k,v>,调用一次map方法。每次调用map方法会输出零个或多个键值对。
  4. 第四阶段是按照一定的规则对第三阶段输出的键值对进行分区。默认是只有一个区。分区的数量就是Reducer任务运行的数量。默认只有一个Reducer任务。
  5. 第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。那么排序后的结果是<1,3>、<2,1>、<2,2>。如果有第六阶段,那么进入第六阶段;如果没有,直接输出到文件中。
  6. 第六阶段是对数据进行局部聚合处理,也就是combiner处理。键相等的键值对会调用一次reduce方法。经过这一阶段,数据量会减少。本阶段默认是没有的

(三)Reduce阶段执行流程

  1. 第一阶段是Reducer任务会主动从Mapper任务复制其输出的键值对。Mapper任务可能会有很多,因此Reducer会复制多个Mapper的输出。
  2. 第二阶段是把复制到Reducer本地数据,全部进行合并,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
  3. 第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法,每次调用会产生零个或者多个键值对。最后把这些输出的键值对写入到HDFS文件中。

总结

整个MapReduce程序的开发过程中,最大的工作量是覆盖map函数和覆盖reduce函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值