本文共 3763 字,大约阅读时间需要 12 分钟。
本文将详细介绍基于Hadoop MapReduce的WordCount程序的开发与运行过程,包括程序设计、打包运行以及在Hadoop集群上运行的实际操作步骤。
在MapReduce的WordCount程序中,Map阶段的主要任务是将输入的文本文件按行分割,并将每行文本拆分成单词。具体来说,TokenizerMapper类通过StringTokenizer将每行文本按空格或其他分隔符分割成单词,并将每个单词及其计数(默认为1)作为Map任务的输出。
此外,Map任务会对输出的键值对进行排序,并执行Combine过程,将相同单词的计数值累加。这样可以确保Combine任务能够接收到有序且连续的键值对,从而提高效率。
Reduce阶段的主要任务是对Map阶段输出的有序键值对进行处理。IntSumReducer类会接收所有以相同单词为键的计数值,并将它们相加,得到该单词在整个文本中的总出现次数。
Reduce任务的输出即为最终的WordCount结果,键为单词,值为单词出现的总次数。
为了能够运行WordCount程序,需要下载并添加以下Hadoop相关的JAR包:
hadoop-common-2.6.0.jarhadoop-mapreduce-client-core-2.6.0.jarhadoop-test-1.2.1.jarWordCount的Java项目。Java Build Path中添加上述下载的JAR包。WordCount.java源文件,包含以下内容:import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WordCount { public static class TokenizerMapper extends Mapper WordCount项目作为导出的基础,设置输出路径和文件名。WordCount.jar文件。/usr/local/Cellar/hadoop/2.6.0/sbin目录。start-dfs.sh
jps查看进程。hdfs dfs -mkdir /userhdfs dfs -mkdir /user/input
hdfs dfs -put /Users/你的路径/test*.html /user/input
mkdir WorkSpace
WordCount.jar复制到工作目录: cp /你的路径/WordCount.jar ./WorkSpace
hadoop jar WorkSpace/WordCount.jar WordCount /user/input /user/output
hdfs dfs -ls /user/output
hdfs dfs -cat /user/output/part-r-00000
hadoop job -debug