MapReduce操作实践

本文总结了MapReduce的基本知识,并通过三个实践环节深入探讨MapReduce操作:1) 实现WordCount统计单词频率;2) 自定义Hadoop数据类型,同时计算单词长度;3) 通过多MapReduce任务串联,统计总单词数。在实践中,遇到如jar包导入失败、输出目录设置等问题,文章也给出了相应的解决方案。

实验内容与要求:

  1. MapReduce基本知识总结
  2. MapReduce的操作实践
    2.1 基于MapReduce的WordCount实践:统计每个单词出现的次数
    2.2 自定义Hadoop数据类型实践:自定义hadoop数据类型,在统计每个单词出现次数的过程中,同时计算每个单词的长度
    2.3 多mapReduce任务的串联实践:基于MapReduce统计共有多少个单词,而不是每个单词出现的次数

1. MapReduce基本知识的总结

MapReduce是一个运行在Hadoop上的分布式计算框架,用于处理大规模的数据,计算的思想是“分治法”,将大量数据分为不互相依赖的数据块,存储在不同的datanode上,由map函数处理形成部分数据的处理结果,再由reduce函数整合形成最终的结果。
一个map函数处理一个<key1,value1>数据,map端的shuffle阶段将<key1,value1>转化为<key1,value-list>形式,减少数据传输的工作量,reduce端的shuffle阶段将map端对应分区数据取回reduce端,对数据按键值排序,reduce函数将<key1,value-list>的数据合并,转为<key2,value2>。
Hadoop的数据类型是对java数据类型的封装,便于进行序列化处理,使不同的数据以统一的格式在集群中存储传输,参考Hadoop的text类型源码,可以自定义wordcountandlen数据类型,输出每个单词的总数和长度。
有时一个MapReduce过程无法得到想要的结果,可以通过多mapre任务的串联完成,如要统计总共有多少个单词,可以使用两个MapReduce任务串联完成。

2. MapReduce的操作实践

2.1基于MapReduce的WordCount实践

代码:
在这里插入图片描述
在这里插入图片描述

运行结果:
在这里插入图片描述

问题:mapreduce相关jar包导入失败
解决办法:检查setting.xml文件中localRepository和mirror标签配置是否正确,且和IDEA中配置的路径相同;右键单击WordCount项目,选择maven,选择Download Sources and Documentation,下载完毕后选择reimport重新导入即可

注意:设置程序的输入输出目录,且输出目录在HDFS上不能存在

2.2 自定义Hadoop数据类型实践

代码:
新建WordCount.java文件:

在这里插入图片描述

在WordCount.java文件中的MyReducer类中修改代码如下图:
在这里插入图片描述

运行结果:
在这里插入图片描述

2.3 多mapReduce任务的串联实践

代码:
在第一个实验代码的基础上,添加如下代码:
在这里插入图片描述

在main函数中定义两个job对象:
在这里插入图片描述

问题:运行WordCount.java文件只出现如下结果,没有单词总数
在这里插入图片描述

解决办法:如下设置两个输出目录:
在这里插入图片描述

设置完,删除之前运行产生的ouput文件夹,重新运行WordCount.java文件,即可出现正确结果,其中/output1存放第一次mapreduce的结果,/output2存放第二次mapreduce的结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值