4,wordcount 多MapReduce任务的串联

本文介绍了MapReduce在大数据处理中的应用,通过实例展示了如何使用Combiner优化Map阶段,减少数据传输和reduce端的聚合次数。同时,详细阐述了如何串联两个MapReduce任务来统计总单词数,第一个任务计算单词频率,第二个任务转换并汇总结果。文章还总结了MapReduce的工作流程,包括Splitting、Map、Shuffle、Reduce和Output阶段,并强调了在解决复杂问题时,理解并合理串联多个MapReduce任务的重要性。

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

一,combiner实验:

       Map阶段结束后,产生的键值对的value全为1,为了减少map将键值对传到节点上时用过多的时间和内存,减少reduce端聚合的次数,在map之后reduce之前,先将每个map任务产生的相同key值的value进行一次合并。由于在wordcount中combiner操作与reduce操作是一样的,所以Mycombiner类代码内容与reducer一样。

在编写完combiner类之后,要在主类下进行设置。如下图:

其他类不变。

二,多mapReduce任务的串联。

实际中很多大数据处理任务无法通过一个单独的MapReduce过程完成。下面方法利用原有的wordcount程序实现统计总共使用了多少个单词。

第一个mapreduce产生的结果是,每种单词以及他们出现的次数,

这样我们只需要计算文件的行数就可以了。所以在第二个map阶段,需要把所有的key变成一样的字符,value全部变成1,在reduce阶段就可以将所有的value合并,就是所用单词的个数。

1,第一个map阶段程序没有改变,第二个map阶段的程序如图所示

第一次MapReduce产生的所有键值对全部替换成<”The num of words: ”, 1 >。再进行一次reduce即可。

2,配置wordcount主类。

首先修改之前的job对象名为job1,

删掉result提交运行程序步骤。

在job2阶段加上,

建立第二个job2对象。将第一个job1的输出作为job2的输入。

完成后如下图。

3,localhost50070 BrowseDirectory下建立两个文件夹名为luzhiming1,luzhiming2

4,配置run下的configuration。添加job1job2的输入输出路径。如下图:

5,运行程序,查看两个目录下的文件如图。

第一次MapReduce结果:

第二个MapReduce结果:

三,对mapreduce的理解总结。

  1. MapReduce 的作用;

当我们需要处理海量的数据时,单个的计算机很难完成,所以需要将数据分布式储存在很多机器上,这就是hadoop分布式文件系统,而MapReduce就是在hadoop分布式文件系统上处理数据的一种分布式计算模型。

  1. MapReduce的工作流程:
  1. Splitting阶段。在input数据后,在此阶段,每个输入文件会被分片输入到map,一个split就是对应一个map处理数据块的描述。
  2. 将split处理后,数据将<key,value>形式进入到map阶段,执行map任务。Map将初始的<key,value>形式的数据处理为特定的<key,value>的形式。
  3. Shuffle阶段。混洗操作,将一个map结果分到不同的reduce进行处理。Partition分区操作。将map产生的不同<key, value>键值对分配给不同的reduce;Combine合并操作将一个分区内相同key的value进行合并运算处理,可以减少需要在map和reduce之间传输的数据量。Merge文件合并操作,MapReduce将map产生的<key, value>数据写入磁盘。
  4. Reduce阶段,reduce数量由分区数决定,将map阶段的结果再次进行合并处理。在wordcount中,reduce阶段将key值相同的键值对的值进行合并。
  5. output阶段,将reduce结果的每个键值对按一行输出到指定文件。文件路径需要提前在configuration中配置。

总结:

实际上,在对复杂问题进行处理时,往往需要对多个MapReduce任务进行串联,这个时候要理清每个MapReduce的作用。前一个reduce的结果直接输出到map阶段,再执行一次reduce操作,每个MapReduce操作可能相同,也可能不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沐风797

hadoop所有安装包

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

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

打赏作者

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

抵扣说明:

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

余额充值