一、MapReduce定义
MapReduce是一个分布式、并行处理的计算框架。MapReduce 把任务分为 Map 阶段和 Reduce 阶段。开发人员使用存储在HDFS 中数据(可实现快速存储),编写 Hadoop 的 MapReduce 任务。由于 MapReduce工作原理的特性, Hadoop 能以并行的方式访问数据,从而实现快速访问数据。
二、Mapreduce经典案例---数据去重实验(本地)过程:
1.map阶段的实现:创建dup的包,在该包下创建用于实现mapper组件的类duomapper
2.reduce阶段的实现:根据map阶段的输出结果的形式,在dup包下创建用于实现reducer组件的类dupreducer
3.驱动类的实现:在dup包下面创建mapreduce程序的驱动类dupdriver
注意:在此驱动类中对于output进行了改进,之前每次运行的时候都要先去本地看一下output是否已经被创建,比较麻烦,现在增加了一个判断,如果output存在的话,就删掉的一个判断方法。
4.运行并查看结果
可以发现去重成功
三、Mapreduce经典案例---数据去重实验(集群)过程:
1.将驱动类中的运行模式改为本地模式
2.将文本文件的输入路径和处理结果的路径进行更改
3.双击package选项,看到jar文件的封装流程并将文件的名字改为Dedup-1.0-SNAPSHOT
4.将文件上传到Hadoop集群所在虚拟机的任意目录
5.将文本文件上传到hdfs的input目录
6.确保hadoop集群处于启动状态,在jar文件所在目录将mapreduce程序提交到yarn集群运行
7.在output中查看去重的结果
可以看出去重成功
四、Mapreduce经典案例----TopN(本地)
1.map阶段的实现:创建TopN的包,下该包下创建用于实现Mapper组件的类TopNMapper
2.reduce阶段的实现:根据map阶段的输出结果形式,在TopN包下创建用于实现reducer组件的类TopNReducer
3.驱动类的实现:在TopN包下面创建mapreduce程序的驱动类TopNDriver
4.运行并查看结果
5.在这里面有一个坑,当只有一个txt文件选出最大的前五个的时候,一个txt文件是一个block会执行一个map任务,所以在reduce中降序之后不管是扔掉最后一个还是扔掉第一个对结果都没有任何影响,如看下面的图,选出最大的五个数字,没有任何问题
但是当由两个txt文件的时候就会出现问题,两个txt文件的话会有两个block,所以会执行两个map任务,map里面是执行的一个txt,当reduce进行降序之后,如果扔掉的是第一个的话就会造成错误,如下图,按照正确的应该是:100 89 87 78 72,但是图中是72 45 24 23 21,应该在reduce进行降序之后,扔掉最后一个才对
五、 Mapreduce经典案例----TopN(集群)
1.将驱动类的运行模式改为集群运行
2.更改文本文件的输入路径和处理结果的输出路径
3.双击package选项,看到jar文件的封装流程并将文件的名字改为TopN-1.0-SNAPSHOT.jar
4.将文本文件上传到HDFS的input目录
5.确保hadoop集群处于启动状态,在jar文件所在目录将mapreduce程序提交到yarn集群运行
6.查看运行结果

六、Mapreduce经典案例---倒排索引
1.创建Inverted包,在该包下创建用于实现mapper组件的类invertedindexmapper
2.combin阶段的实现:根据map阶段的输出结果,对每个单词进行词频统计,在inverted包下创建用于实现自动逸combiner组件的类invertedindexcombiner
3.reduce阶段实现:根据combine阶段的输出结果形式,在invertedindex包下创建用于实现reducer组件的类invertedindexreducer
4.驱动类的实现:在inverted包下面创建mapreduce程序的驱动类invertedindexdriver
5.将数据文件上传到hdfs:将倒排索引案例的jar文件封装并上传到bxm02的/export/data目录
6.在虚拟bxm02的根目录下创建/InvertedIndex/input目录,将file1.txt,file2.txt和file3.txt上传到该目录下面,使用hdfs dfs -put /InvertedIndex/命令将InvertedIndex目录上传至hdfs的根目录,并打开是否上传成功
7.运行mapreduce程序:在虚拟机bxm02:的/export/data目录执行,运行倒排索引的mapreduce程序,对hdfs文件系统的/invertedindex/input目录下的文件进行处理
8.查看运行结果