一、Mapper编写
1.创建Mapper类WordCountMapper
,继承org.apache.hadoop.mapreduce.Mapper
抽象类;
2.注意Text
导包不要导错了,应该是org.apache.hadoop.io.Text
。
二、Reducer编写
1.创建Reducer类WordCountReducer
,继承org.apache.hadoop.mapreduce.Reducer
抽象类;
2.写业务逻辑,实现按单词累加计算mapper的结果。
三、Driver编写
1.获取job;
2.设置jar包路径;
3.关联mapper和reducer;
4.设置map输出的key和value类型;
5.设置最终输出的key和value类型;
6.设置输入路径和输出路径;
7.提交job,等待运行结束。
四、本地运行代码
1.Edit configurations,输入两个参数,第一个参数是要统计的输入文档的路径F:\javaProject\hadoop\input\wordcount.txt
,第二个参数是MR结果输出路径F:\javaProject\hadoop\output\wordcount
,注意输出路径要不存在,否则会报错;
2.运行WordCountDriver
,观察输出路径中的文件,会包含四个文件:
._SUCCESS.crc
.part-r-00000.crc
_SUCCESS
part-r-00000
前两个是校验文件,第三个是成功标识,最后一个是结果文件。
五、打成jar包
1.pom.xml增加maven打包依赖,build部分,详见最后代码包;
2.idea中选择maven中的Lifecycle中的package进行打包;
3.生成的jar包在target目录下。
六、在集群环境下运行
1.将jar包上传到集群任意一台机器上,这里以hadoop01为例;
2.运行jar包,命令为:
hadoop jar MapReduceDemo-1.0-SNAPSHOT.jar com.kaceyollie.mr.wordcount.WordCountDriver /wcinput /wcoutput
3.打开http://hadoop02:8088可以查看Yarn中的任务运行情况;
4.打开http://hadoop01:9870查看运行结果
七、代码
代码见https://gitee.com/kaceyollie/bigdata-study.git中,MapReduceDemo项目中com.kaceyollie.mr.wordcount包