实验内容与要求:
- MapReduce基本知识总结
- 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任务的串