首先,创建一个新的文件,将这段英文的内容复制到该文件中:
cat > test
然后将新创建的test文件放到HDFS文件系统上作为mapReduce的输入文件:
./bin/hadoop fs -put ./test /wordCountInput
该命令执行HDFS的命令将本地的文件test放置到HDFS的根目录下wordCountInput文件。通过ls命令查看是否执行成功:
linuxidc@linuxidc-VirtualBox:~/workplace/hadoop/hadoop-2.6.0$ ./bin/hadoop fs -ls /
Found 1 items
-rw-r--r-- 1 linuxidc supergroup 1400 2015-01-20 13:05 /wordCountInput
mapReduce的测试包在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar中,这是多个测试程序打包而成的jar文件,我们使用wordCount功能执行单词统计。
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /wordCountInput /wordCountOutput
这个命令使用hadoop的mapReduce执行jar包中的wordcount程序,这个程序的输入是HDFS的/wordCountInput文件(如果这个文件是一个目录,那么输入就是该目录下的所有文件),输出放到HDFS的/wordCountOutput目录中。执行过程中打印很多INFO信息,我们看一下部分的输出信息:
15/01/20 13:09:29 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/01/20 13:09:29 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
15/01/20 13:09:29 INFO input.FileInputFormat: Total input paths to process : 1
15/01/20 13:09:30 INFO mapreduce.JobSubmitter: number of splits:1
15/01/20 13:09:30 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local810038734_0001
...
15/01/20 13:09:33 INFO mapred.MapTask: Starting flush of map output
15/01/20 13:09:33 INFO mapred.MapTask: Spilling map output
...
15/01/20 13:09:34 INFO mapreduce.Job: map 100% reduce 0%
...
15/01/20 13:09:35 INFO mapred.LocalJobRunner: Finishing task: attempt_local810038734_0001_r_000000_0
15/01/20 13:09:35 INFO mapred.LocalJobRunner: reduce task executor complete.
15/01/20 13:09:35 INFO mapreduce.Job: map 100% reduce 100%
15/01/20 13:09:36 INFO mapreduce.Job: Job job_local810038734_0001 completed successfully
15/01/20 13:09:36 INFO mapreduce.Job: Counters: 38
...
File Input Format Counters
Bytes Read=1400
File Output Format Counters
Bytes Written=1416
然后看一下结果的目录:
linuxidc@linuxidc-VirtualBox:~/workplace/hadoop/hadoop-2.6.0$ ./bin/hadoop fs -ls /wordCountOutput
Found 2 items
-rw-r--r-- 1 linuxidc supergroup 0 2015-01-20 13:09 /wordCountOutput/_SUCCESS
-rw-r--r-- 1 linuxidc supergroup 1416 2015-01-20 13:09 /wordCountOutput/part-r-00000
可以看到这个目录下有两个文件,其中part-r-00000就是我们的执行结果:
linuxidc@linuxidc-VirtualBox:~/workplace/hadoop/hadoop-2.6.0$ ./bin/hadoop fs -cat /wordCountOutput/part-r-00000
Hadoop 5
The 5
a 4
and 7
for 4
is 5
now 3
proxy 2
release 3
the 9
to 4
user 3
这里只摘取了出现次数大于2的一些单词和它在上面的文件中的出现次数。它正确的统计了上面文件中出现的单词的个数,接着我们就可以自己写mapReduce程序来实现各种各样的计算功能了。