用Hadoop管理界面来分析Map-Reduce作业
如果我们只是在IDE里面跑Hadoop作业,那么这个作业的运行过程不会显示在Hadoop管理界面上,但是如果我们把作业上传到服务器上运行,那么作业的运行过程就会显示在管理界面上。还是以上次的分析最高气温的Map-Reduce为例,源代码可以见http://supercharles888.blog.51cto.com/609344/878422 这篇博客的内容。我们将其打包成jar包,然后上传到/home/hadoop-user/hadoop-0.20.2/charlestest 目录中:
我们在命令行中执行MaxTemperature类中定义的作业:
hadoop jar ParseWeatherFile.jar com.charles.parseweather.MaxTemperatureinput/1901.txt output-001
这里我们执行的入口为 WeatherFile的 jar包中的MaxTemperature类,最后2个参数分别是输入文件位置和输出目录:
运行结果如图:
现在我们就可以去控制台去看整个过程了:
我们去http://192.168.129.35:50030/jobtracker.jsp 来看map-reduce过程。
在Completed Job部分,我们看到了刚才运行的作业:
对比Job Name刚好是我们在job类中设定的名字,见第43行所示:
[*]package com.charles.parseweather;
[*]
[*]
[*]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.input.TextInputFormat;
[*]import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
[*]import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
[*]
[*]
[*]/**
[*] *
[*] *
[*] * Description: 这个类定义并且运行作业
[*] *
[*] * @author charles.wang
[*] * @created May 24, 2012 5:29:12 PM
[*] *
[*] */
[*]
[*]public class MaxTemperature {
[*]
[*] /**
[*] * @param args
[*] */
[*] public static void main(String[] args) throws Exception{
[*] // TODO Auto-generated method stub
[*]
[*]
[*] if (args.length !=2){
[*] System.err.println("Usage: MaxTemperature");
[*] System.exit(-1);
[*] }
[*]
[*] //创建一个Map-Reduce的作业
[*] Configuration conf = new Configuration();
[*] conf.set("hadoop.job.ugi", "hadoop-user,hadoop-user");
[*]
[*] Job job = new Job(conf,"Get Maximum Weather Information! ^_^");
[*]
[*] //设定作业的启动类/
[*] job.setJarByClass(MaxTemperature.class);
[*]
[*] //解析输入和输出参数,分别作为作业的输入和输出,都是文件
[*] FileInputFormat.addInputPath(job, new Path(args));
[*] FileOutputFormat.setOutputPath(job, new Path(args));
[*]
[*] //配置作业,设定Mapper类,Reducer类
[*] job.setMapperClass(MaxTemperatureMapper.class);
[*] job.setReducerClass(MaxTemperatureReducer.class);
[*] job.setOutputKeyClass(Text.class);
[*] job.setOutputValueClass(IntWritable.class);
[*]
[*] System.exit(job.waitForCompletion(true)?0:1);
[*]
[*]
[*]
[*]
[*]
[*]
[*] }
[*]
[*]}
我们点进去,则可以看到Map-Reduce的更多细节:
页:
[1]