2013-01-03 9 views
9

La maggior parte dei programmi di Hadoop MapReduce sono come questo:Qual è l'utilizzo di classe Configurato in programmi di Hadoop

public class MyApp extends Configured Implements Tool { 
    @Override 
    public int run(String[] args) throws Exception { 
     Job job = new Job(getConf()); 
     /* process command line options */ 
     return job.waitForCompletion(true) ? 0 : 1; 
    } 
    public static void main(String[] args) throws Exception { 
     int exitCode = ToolRunner.run(new MyApp(), args); 
     System.exit(exitCode); 
    } 
} 

Qual è l'utilizzo di Configured? Come Tool e Configured entrambi hanno getConf() e setConf() in comune. Cosa fornisce alla nostra applicazione?

risposta

9

Configured è una classe di implementazione di Configurable. Configured è la classe base che ha le implementazioni di getConf() e setConf().

Solo estendere questa classe base consente alla classe che estende di configurarla utilizzando uno Configuration e ci sono più di una implementazione per Configuration.

Quando il codice esegue la seguente riga,

ToolRunner.run(new MyApp(), args); 

Internamente lo farà

ToolRunner.run(tool.getConf(), tool, args); 

Nel caso di cui sopra tool è l'istanza MyApp classe che è un'implementazione di Tool che altrettanto hai detto che ha getConf() ma è proprio come un'interfaccia. L'implementazione proviene dalla classe base Configured. Se si evita di estendere la classe Configured nel codice precedente, sarà necessario eseguire le implementazioni getConf() e setConf() da soli.

3

Configured è un'implementazione predefinita dell'interfaccia Configurable - fondamentalmente suo metodo setConf mantiene una variabile di istanza privato alla Configuration oggetto passato e getConf() rendimenti riferimento

Tool è un'estensione dell'interfaccia Configurable, fornendo un'aggiunta run(..) metodo e viene utilizzato con ToolRunner per analizzare le opzioni della riga di comando (utilizzando GenericOptionsParser) e creare un oggetto Configuration che viene quindi passato al metodo setConf(..).

La classe principale in genere verrà estesa in modo tale che i metodi di interfaccia configurabili richiesti in Strumento verranno implementati per voi.

In generale si dovrebbe utilizzare la classe di utilità ToolRunner per avviare i lavori MapReduce mentre gestisce l'attività comune di analisi degli argomenti della riga di comando e creazione dell'oggetto Configurazione. Guarderei i documenti API per ToolRunner per maggiori informazioni.

Problemi correlati