MR执行环境有两种:本地测试环境,服务器环境
第一种执行方式:服务器端运行
直接在服务器上,使用命令的方式调用,执行过程也在服务器上
a、把MR程序打包(jar),传送到服务器上
b、通过: hadoop jar jar路径 类的全限定名
Mapper
WordCountMapper .java
package com.mr;
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
/**
* 用到默认的 inputformat : fileInputFormat 类,把数据片段中的数据一行一行读进来,每行下标为 key ,每行的内容为 value
* @author benxi
*
*/
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
// 以单词作为键
public Text k = new Text();
// 以 1 作为 value
public IntWritable v = new IntWritable(1);
@Override
protected void map(LongWritable key , Text value ,Context context )
throws IOException, InterruptedException {
String[] words = StringUtils. split ( value .toString(), " " );
for ( int i = 0; i < words . length ; i ++){
String w = words [ i ];
// 以单词为 key
k .set( w );
context .write( k , v );
}
}
}
Reduce
WorldCountReduce .java
package com.mr;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class WorldCountReduce extends Reducer<Text, IntWritable