在实际的开发过程中,我们都是在IDE上编写好我们的业务应用程序之后,打包成jar包再提交至Hadoop集群上执行任务。本文我将介绍在eclipse中开发mapreduce应用的详细过程以及编写mapreduce应用的两种不同方式。为了便于各个jar包的管理和依赖解决,所以我选用的Maven构建工具来构建项目环境,如对maven不熟的朋友请自行google或百度解决。
下面均以最简单的WordCount应用来介绍编写过程。在编程过程中所有需要注意的选项均写在注释中,请仔细阅读。
第一种方式:Mapper,Reducer均在一个单独的文件中
第一步:在eclipse中新建Maven项目
第二步:增加hadoop的依赖jar包(请选择自己对应的hadoop版本)
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.4</version>
</dependency>
第三步:创建java文件,编写代码
这里我将Mapper和Reducer实现类,以及job任务的配置实现均放置在一个java文件WordCount中,下面是WordCount类的代码:
package com.shell.count;
import java.io.IOException;
import java.util.Iterator;
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.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutput