单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到。单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数,如下图所示。
┄┄┄┄┄┄┄┄┄分割线┄┄┄┄┄┄┄┄┄
1)创建本地示例文件
登录master服务器,在hadoop目录下创建文件夹"file"
创建两个文本文件file1.txt和file2.txt,file1.txt内容为"Hello World",
file2.txt的内容为"Hello Hadoop"。
![](https://img-my.csdn.net/uploads/201304/12/1365762968_6189.jpg)
可以查看下文件内容:
![](https://img-my.csdn.net/uploads/201304/12/1365763418_2864.jpg)
在HDFS上创建文件夹
![](https://img-my.csdn.net/uploads/201304/12/1365763888_3673.jpg)
上传本地file中的文件到集群的input目录下
![](https://img-my.csdn.net/uploads/201304/12/1365764449_9010.jpg)
![](https://img-my.csdn.net/uploads/201304/12/1365764462_2000.jpg)
2)运行例子
在集群上运行wordcount
已经编译好的WordCount的Jar在"/home/ubuntu/hadoop"(此路径根据每个人会有所不同)下面,就是"hadoop-examples-1.0.4.jar", 所以在执行命令时记得把路径写全了,不然会提示找不到该Jar包。
还有需要注意的时,如果在集群上有了output文件夹,当运行的时候会报错。
![](https://img-my.csdn.net/uploads/201304/13/1365853436_9166.jpg)
MapReduce执行过程
![](https://img-my.csdn.net/uploads/201304/13/1365853939_8003.jpg)
Hadoop命令会启动一个JVM来运行这个MapReduce程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到Hadoop的库 中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201304061043_0002,而且得知输入文件有两个 (Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数),以及reduce输入输出记录。比如说,在 本例中,map的task数量是2个,reduce的task数量是1个。map的输入record数是2个等信息。
3)查看结果
查看结果输出内容
输入命令:bin/hadoop fs -ls output
![](https://img-my.csdn.net/uploads/201304/13/1365855010_3369.jpg)
这里我们可以知道生成了三个文件,我们的结果在"part-r-00000"中。
输入命令:bin/hadoop fs -cat output/aprt-r-00000
![](https://img-my.csdn.net/uploads/201304/13/1365857533_2564.jpg)