2017-01-17 2 views
0

Ich arbeite mit Map Reduce-Auftrag und führe ihn mit der Run-Methode von ToolRunner aus. Hier ist mein Code:Warum reduziert Map den Job-Poinitng auf localhost: 8080?

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

Der Auftrag gut ausgeführt, wie erwartet. Aber als ich in die Logs schaute, die die Informationen über das Job-Tracking anzeigen, stellte ich fest, dass die Map reduce auf localhost: 8080 für die Verfolgung des Jobs zeigt. Hier

ist die Momentaufnahme der Protokolle:

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 

So ist meine Frage, warum zeigt Karte reduce auf localhost: 8080

Die URL, den Job zu verfolgen: http://localhost:8080/

Es gibt keine Konfigurationsdatei oder Eigenschaftendatei, in der ich dies manuell festlege. Ist es auch möglich, dass ich es zu einem anderen Port ändern kann? Wenn ja, wie kann ich das erreichen?

+0

Führen Sie dies im lokalen Modus oder in einem Cluster? – Venkat

+1

Es muss 'localhost: 8088' sein, der Standardport für ApplicationMaster Web UI. – franklinsijo

+0

Es ist im lokalen Modus und nur 8080 – KayV

Antwort

0

Wir brauchen die Standardkonfiguration zu ändern und ein Konfigurationsobjekt erstellen und die Eigenschaften festgelegt zu diesem Konfigurationsobjekt und erstellen Sie dann ein Job-Objekt mit dieser Konfiguration wie folgt:

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

So sind die Ports werden in Garn-site.xml konfiguriert: yarn-site.xml

Check: yarn.resourcemanager.webapp.address

Verwandte Themen