(4) 在eclipse中编译好源代码后,导出程序的jar包,供在集群上使用。
2.在集群上运行程序
(1) 启动集群,通过jps命令查看master,slave上启动的服务列表,结果如
下:
(2) 在集群环境下运行该程序jar包(UserNameCount.jar),结果如下:
(3) 查看集群环境下启动程序生成的结果,即output文件,结果如下:
(4) 数据统计结果在part-r-00000中,具体内容如下,
7、源代码:
package hadoop;
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.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.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
public class UserNameCount {
public static class UserNameCountMap extends
Mapper
private final IntWritable one = new IntWritable(1); private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString();
StringTokenizer token = new StringTokenizer(line); while (token.hasMoreTokens()) { word.set(token.nextToken()); context.write(word, one); } } }
public static class UserNameCountReduce extends
Reducer
public void reduce(Text key, Iterable
Context context) throws IOException, InterruptedException { int sum = 0;
for (IntWritable val : values) { sum += val.get(); }
context.write(key, new IntWritable(sum)); } }
public static void main(String[] args) throws Exception {
}
Configuration conf = new Configuration(); Job job = new Job(conf);
job.setJarByClass(UserNameCount.class); job.setJobName(\
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class); job.setMapperClass(UserNameCountMap.class); job.setReducerClass(UserNameCountReduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); }