Hadoop入门指南之MapReduce介绍

本文是Hadoop入门系列的MapReduce篇,介绍了MapReduce的工作原理,通过军训人数统计的例子解释Map和Reduce的思想。MapReduce在yarn集群中运行,涉及ResouceManager和NodeManager。编程时只需指定map、reduce方法及输入输出类型,框架会处理其他细节。文章还概述了MapReduce的完整流程,包括InputFormatClass、MapperClass、ReducerClass等设置,并预告下篇将通过实例深入讲解代码实现。

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

Hadoop系列文章索引:

Hadoop入门指南之HDFS介绍

Hadoop入门指南之Linux环境搭建

Hadoop入门指南之Linux软件安装

Hadoop入门指南之Hadoop安装

Hadoop入门指南之hdfs命令行使用.

Hadoop入门指南之MapReduce介绍

Hadoop入门指南之统计库存实战

Hadoop入门指南之分区、规约实战

Hadoop入门指南之排序实战

Hadoop入门指南之分组实战

Hadoop入门指南之表连接操作

Hadoop入门指南之yarn介绍​​​​​​​​​​​​​​

Hadoop的第二部分就是MapReduce,在介绍完HDFS后,就需要谈到MapReduce了。MapReduce其实生活中大家都接触过,只是不是这个叫法。比如大家参加军训或者集会,需要统计到场人数时,是怎么做的呢。首先把所有人按照部门、方阵等划分成小单位,然后每个单位有个队长一样的人员负责统计自己负责的单位的人数,最后由所有队长汇报给领导,领导汇总后得出一个总人数。这里每个队长数各自单位的人数就是Map,领导听取队长报告汇总人数就是Reduce。这其实就是MapReduce的核心思想。当需要对大量数据进行处理的时候,为了高效快速,Hadoop就会把这些数据切分,切分后的数据分发给节点,由各个节点进行处理,处理完毕后再汇总,最后输出结果。

MapReduce运行在yarn集群中,由ResouceManager和NodeManager组成。ResouceManager有ApplicationManager和ResourceScheduler两个组成部分,而NodeManager会启动MapTask和ReduceTask。相当于ResouceManager就是总指挥部,NodeManager就是各个分队。当用户需要处理任务时,ApplicationManager先启动一个MRAppMaster,MRAppMaster计算完成计算需要的资源,向ResourceScheduler请求资源,得到资源列表后,再要求NodeManager分配资源,之后各个NameNode得到自己要做的一部分MapTask,开始处理,处理完毕后交由NodeManager开启ReduceTask进行汇总,最后将结果提交给ApplicationManager完成处理任务。

在使用Java编程MapReduce时,只需要指定map方法,reduce方法,input、output类型,以及中间的键值类型就可以了,其他都交由框架完成。Map阶段开始之前要设置好InputFormatClass,然后Map会据此将数据切分成键值对<K1,V1>。我们实现一个map方法,写业务逻辑把<K1,V1>转换成<K2,V2>,这里map方法要指定K2和V2的类型。接着开始Shuffle阶段,分为分区、排序、规约、分组,其中规约的英文是Combiner,我的个人理解是合并。分别表示对输入的键值按照一定的逻辑进行分区,按照规则对数据进行排序,对符合相同规则的数据进行合并,对相同规则的key、value分在同一组,交由同一个Reducer处理。最后就是Reduce阶段,接收Shuffle完成的数据,实现一个reduce方法,把<K2,[V2,V2,V2....]>变为<K3,V3>,根据设置好的OutputFormatClass,将结果输出。

所以除了上面要做的,我们最后要写一个方法,对整个MapReduce过程进行设置,包括了指定InputFormatClass,指定MapperClass,指定MapOutputKeyClass、MapOutputValueClass(K2,V2),指定ReducerClass,指定OutputKeyClass、OutputValueClass(K3,V3),指定OutputFormatClass,最后在main方法中运行整个job。

下一篇我们就做一个具体的案例,通过案例来讲解怎么具体去写代码。

感谢观看,如果您觉得文章写得还不错,不妨点个赞。如果您觉得有什么疑惑或者不对的地方,可以留下评论,看到我会及时回复的。如果您关注一下我,那么我会更高兴的,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值