(一)简介
1.MaprReduce分为Map过程与Reduce过程,我们以词频计算的例子来说明;假设需要统计文本“this is a small cat。that is a small dog”的词频:
(1)Map过程:将每个单词从文本中解析出来并生成key-alue对:<"this",1>,<"is",1>,<"a",1>,<"small",1>,<"cat",1>,<"that",1>,<"is",1>,<"a",1>,<"small",1>,<"dog",1>,其中key表示单词,value表示频数,允许相同的键值对多次出现;
(2)Reduce过程:合并同类项,也就是统计单词出现的最终频数:<"this",1>,<"is",2>,<"a",2>,<"small",2>,<"cat",1>,<"that",1>,<"dog",1>;
2.标准形式的MapReduce程序:一个Map的java文件,一个Reduce的java文件,一个负责调用的主程序Java文件;
3.基于Hadoop的WordCount的流程:
(1)调用hdfs命令行工具,将本地文本文件复制到hdfs上;
(2)用java写MapReduce代码,写完后调戏编译,然后打包成jar包;
(3)调用Hadoop命令,将jar包放在Hadoop集群上处理文本文件进行词频统计,然后将结果存放在指定的目录;
(4)调用hdfs命令行工具,查看处理结果;
(二)wordcount的实现
新建目录wordcount_01存放项目,子目录src存放java源码,子目录classes存放编译结果;源码包括TokenizerMapper.java,IntSumReducer.java,WordCount.java:
1.源码编辑
TokenizerMapper.java源码: