2013-01-03 4 views
9

meisten Hadoop MapReduce-Programme wie diese sind:Was die Verwendung von Konfiguriert Klasse in Hadoop-Programmen ist

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

Was die Verwendung von Configured ist? Als Tool und Configured haben beide getConf() und setConf() gemeinsam. Was liefert es unserer Anwendung?

Antwort

9

Configured ist eine Implementierungsklasse von Configurable. Configured ist die Basisklasse mit den Implementierungen getConf() und setConf().

Durch das bloße Erweitern dieser Basisklasse kann die Klasse, die dies erweitert, mit einer Configuration konfiguriert werden, und es gibt mehr als eine Implementierung für Configuration.

Wenn Ihr Code führt die folgende Zeile ein,

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

Intern es diesen

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

Im obigen Fall tut tool ist die MyApp Klasseninstanz, die eine Implementierung von Tool ist, die ebenso Sie sagten, hat getConf(), aber es ist nur als Schnittstelle. Die Implementierung kommt von Configured Basisklasse. Wenn Sie vermeiden, Configured Klasse in dem obigen Code zu erweitern, müssen Sie die Implementierungen getConf() und setConf() auf eigene Faust tun.

3

Configured ist eine Standardimplementierung der Configurable Schnittstelle - im Grunde behält seine setConf Methode eine private Instanzvariable zu dem übergebenen Configuration Objekt und getConf() kehrt die

Tool Referenz eine Erweiterung der Configurable Schnittstelle ist ein Zusatz Bereitstellung run(..) Methode und wird mit ToolRunner verwendet, um Kommandozeilenoptionen auszuwerten (unter Verwendung der GenericOptionsParser) und ein Configuration Objekt zu erstellen, das dann an die setConf(..) Methode übergeben wird.

Ihre Hauptklasse wird in der Regel so konfiguriert, dass die im Tool benötigten konfigurierbaren Schnittstellenmethoden für Sie implementiert werden.

Im Allgemeinen sollten Sie die ToolRunner-Dienstprogrammklasse verwenden, um Ihre MapReduce-Jobs zu starten, da sie die allgemeine Aufgabe des Parsens von Befehlszeilenargumenten und des Erstellens des Configuration-Objekts behandeln. Ich würde die API Docs für ToolRunner für weitere Informationen betrachten.

Verwandte Themen