一、Hadoop下载
首先下载Hadoop包,将他安装到你喜欢的位置。
Hadoop包(2.6.5)下载地址:
http://apache.fayea.com/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
二、在Windows下配置Hadoop环境变量
找到“此电脑”图标
右键选择“属性”,在左侧菜单栏中选择“高级系统设置”
选择“环境变量”
在界面下方找到“新建”
新增“HADOOP_HOME"系统变量,变量值为第一步Hadoop的安装路径
确定后在下方找到“Path”
点击编辑,新增一个环境变量“%HADOOP_HOME%\bin”
三、创建一个项目
创建一个新的项目,选择Java EE
取一个自己喜欢的名字,这里用的是“TestMR”
四、导入jar包
首先我们找到Hadoop的安装目录,找到“D:\xxx\hadoop-2.6.5\share\hadoop”路径(xxx是你自己选择的文件夹),将里面所有的jar包复制粘贴到一个新文件夹中。
配置项目(也可以使用快捷键Ctrl+Alt+Shift+S)
打开以后选择左侧的“Modules”,点击右侧的“+”号,选择“JARs or directories”
此处我们导入之前准备好的jar包文件夹
接着我们要打包配置
选中建立好的项目
五、编写Map-Reduce程序
此处运行的是一个WordCount程序,样本代码如下:
MyMapper.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
public class MyMapper extends Mapper<LongWritable, Text,Text,IntWritable>{
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
//得到输入的每一行数据
String line = value.toString();
//通过空格分隔
String[] words = line.split(" ");
//循环遍历输出
for(String word : words){
context.write(new Text(word), new IntWritable(1));
}
}
}
MyReducer.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
public class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
Integer count = 0;
for (IntWritable value : values) {
count += value.get();
}
context.write(key, new IntWritable(count));
}
}
MyWc.java
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;
public class MyWc {
public static void main(String[] args)throws Exception{
//创建配置对象
Configuration conf = new Configuration();
//创建job对象
Job job = Job.getInstance(conf,"wordcount");
//设置运行job的类
job.setJarByClass(MyWc.class);
//设置mapper 类
job.setMapperClass(MyMapper.class);
//设置reduce 类
job.setReducerClass(MyReducer.class);
//设置map输出的key value
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//设置reduce 输出的 key value
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//设置输入输出的路径
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
//提交job
boolean b = job.waitForCompletion(true);
if(!b){
System.out.println("wordcount task fail!");
}
}
}
六、配置编译器
在运行前还要配置运行环境
选择“Application”
输入输出路径(项目文件夹下路径后加 input 和 output 即可)
F://CSCodes//IntelliJ//TestMR//input
F://CSCodes//IntelliJ//TestMR//output
将你所需要处理的文件导入input文件夹。
七、运行
结果