一,功能
概述:在简易的hadoop集群上,用MapReduce完成一个文件里面单词计数的统计工作。
二,代码实现
主要有三个类,导入依赖的jar包。
1.master
主要是各种配置,最后一定要提交job!
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.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import com.sand.mr.mapper.WordCountMapper; import com.sand.mr.reducer.WordCountReducer; public class WordCountMaster { public static void main(String[] args) throws Exception { // 初始化配置 Configuration conf = new Configuration(); // 初始化job参数,指定job名称 Job job = Job.getInstance(conf, "wordCount"); // 设置运行job的类 job.setJarByClass(WordCountMaster.class); // 设置Mapper类 job.setMapperClass(WordCountMapper.class); // 设置Reducer类 job.setReducerClass(WordCountReducer.class); // 设置Map的输出数据类型 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); // 设置Reducer的输出数据类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); // 设置输入的路径 -> 可以指定为某一路径或具体的文件 FileInputFormat.setInputPaths(job, new Path("hdfs://SZ01:8020/input/user1")); // 设置输出的路径 -> 最后一级路径自动生成,不会自动覆盖,需要手动修改 FileOutputFormat.setOutputPath(job, new Path("hdfs://SZ01:8020/output/wordCount2")); // 提交job boolean result = job.waitForCompletion(true); // 执行成功后进行后续操作 if (result) { System.out.println("Congratulations!"); } } }