为什么MapReduceJobPointing要localhost:8080?

ljsrvy3e  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(493)

我正在使用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 for 作业的跟踪。
以下是日志快照:

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
跟踪作业的url:http://localhost:8080/
没有配置文件或属性文件,我手动设置。还有,我能把它换成别的端口吗?如果是,我怎样才能做到这一点?

kcwpcxri

kcwpcxri1#

因此,在yarn-site.xml中配置端口:yarn-site.xml
检查:yarn.resourcemanager.webapp.address

raogr8fs

raogr8fs2#

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

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);

相关问题