为什么map将工作指针减少到localhost:8080?

时间:2017-01-17 17:12:07

标签: hadoop java-8 mapreduce bigdata

我正在使用Map Reduce作业并使用ToolRunner的run方法执行它。 这是我的代码:

public class MaxTemperature extends Configured implements Tool {

  public static void main(String[] args) throws Exception {
      System.setProperty("hadoop.home.dir", "/");
      int exitCode = ToolRunner.run(new MaxTemperature(), args);
      System.exit(exitCode);
  }

  @Override
    public int run(String[] args) throws Exception {
        if (args.length != 2) {
              System.err.println("Usage: MaxTemperature <input path> <output path>");
              System.exit(-1);
            }
        System.out.println("Starting job");
        Job job = new Job();
        job.setJarByClass(MaxTemperature.class);
        job.setJobName("Max temperature");

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(MaxTemperatureMapper.class);
        job.setReducerClass(MaxTemperatureReducer.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        int returnValue = job.waitForCompletion(true) ? 0:1;

        if(job.isSuccessful()) {
            System.out.println("Job was successful");
        } else if(!job.isSuccessful()) {
            System.out.println("Job was not successful");           
        }
        return returnValue;
    }
}

这项工作按预期执行得很好。但当我查看显示作业跟踪信息的日志时,我发现Map reduce指向localhost:8080以跟踪作业。

以下是日志的快照:

20521 [main] INFO  org.apache.hadoop.mapreduce.JobSubmitter  - number of splits:1
20670 [main] INFO  org.apache.hadoop.mapreduce.JobSubmitter  - Submitting tokens for job: job_local1454583076_0001
20713 [main] WARN  org.apache.hadoop.conf.Configuration  - file:/tmp/hadoop-KV/mapred/staging/KV1454583076/.staging/job_local1454583076_0001/job.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.retry.interval;  Ignoring.
20716 [main] WARN  org.apache.hadoop.conf.Configuration  - file:/tmp/hadoop-KV/mapred/staging/KV1454583076/.staging/job_local1454583076_0001/job.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.attempts;  Ignoring.
20818 [main] WARN  org.apache.hadoop.conf.Configuration  - file:/tmp/hadoop-KV/mapred/local/localRunner/KV/job_local1454583076_0001/job_local1454583076_0001.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.retry.interval;  Ignoring.
20820 [main] WARN  org.apache.hadoop.conf.Configuration  - file:/tmp/hadoop-KV/mapred/local/localRunner/KV/job_local1454583076_0001/job_local1454583076_0001.xml:an attempt to override final parameter: mapreduce.job.end-notification.max.attempts;  Ignoring.
**20826 [main] INFO  org.apache.hadoop.mapreduce.Job  - The url to track the job: http://localhost:8080/**
20827 [main] INFO  org.apache.hadoop.mapreduce.Job  - Running job: job_local1454583076_0001
20829 [Thread-10] INFO  org.apache.hadoop.mapred.LocalJobRunner  - OutputCommitter set in config null

所以我的问题是为什么map reduce指向localhost:8080

  

跟踪工作的网址:http://localhost:8080/

没有配置文件或属性文件,我手动设置它。另外,我可以将其更改为其他端口吗?如果是,我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:1)

因此端口在yarn-site.xml中配置:yarn-site.xml

检查:yarn.resourcemanager.webapp.address

答案 1 :(得分:0)

我们需要更改默认配置并创建Configuration对象并将属性设置为此配置对象,然后使用此配置创建Job对象,如下所示:

    Configuration configuration  = getConf();

    //configuration.set("fs.defaultFS", "hdfs://192.**.***.2**");
    //configuration.set("mapred.job.tracker", "jobtracker:jtPort");
    configuration.set("mapreduce.jobtracker.address", "localhost:54311");
    configuration.set("mapreduce.framework.name", "yarn");
    configuration.set("yarn.resourcemanager.address", "127.0.0.1:8032");

    //configuration.set("yarn.resourcemanager.webapp.address", "127.0.0.1:8032");

    //Initialize the Hadoop job and set the jar as well as the name of the Job
    Job job = new Job(configuration);