MapReduce - API
In diesem Kapitel werden wir uns die Klassen und ihre Methoden genauer ansehen, die an den Operationen der MapReduce-Programmierung beteiligt sind. Wir werden uns in erster Linie auf Folgendes konzentrieren:
- JobContext-Schnittstelle
- Jobklasse
- Mapper-Klasse
- Reduzierklasse
JobContext-Schnittstelle
Die JobContext-Schnittstelle ist die Super-Schnittstelle für alle Klassen, die verschiedene Jobs in MapReduce definiert. Sie erhalten eine schreibgeschützte Ansicht des Jobs, der den Aufgaben während der Ausführung bereitgestellt wird.
Im Folgenden sind die Unterschnittstellen der JobContext-Schnittstelle aufgeführt.
S.No. | Subinterface Beschreibung |
---|---|
1. | MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Definiert den Kontext, der dem Mapper zugewiesen wird. |
2. | ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Definiert den Kontext, der an den Reduzierer übergeben wird. |
Die Jobklasse ist die Hauptklasse, die die JobContext-Schnittstelle implementiert.
Jobklasse
Die Job-Klasse ist die wichtigste Klasse in der MapReduce-API. Der Benutzer kann den Job konfigurieren, senden, seine Ausführung steuern und den Status abfragen. Die festgelegten Methoden funktionieren nur, bis der Job übergeben wird. Anschließend wird eine IllegalStateException ausgelöst.
Normalerweise erstellt der Benutzer die Anwendung, beschreibt die verschiedenen Facetten des Jobs, übermittelt den Job und überwacht seinen Fortschritt.
Hier ist ein Beispiel, wie Sie einen Job einreichen -
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
Konstruktoren
Im Folgenden finden Sie die Konstruktorzusammenfassung der Jobklasse.
S.No. | Konstruktorübersicht |
---|---|
1 | Job() |
2 | Job(Konfiguration conf) |
3 | Job(Konfiguration conf, String jobName) |
Methoden
Einige der wichtigsten Methoden der Jobklasse sind wie folgt:
S.No. | Methodenbeschreibung |
---|---|
1 | getJobName() Benutzerdefinierter Jobname. |
2 | getJobState() Gibt den aktuellen Status des Jobs zurück. |
3 | isComplete() Überprüft, ob der Auftrag beendet ist oder nicht. |
4 | setInputFormatClass() Legt das InputFormat für den Job fest. |
5 | setJobName(String name) Legt den benutzerdefinierten Jobnamen fest. |
6 | setOutputFormatClass() Legt das Ausgabeformat für den Job fest. |
7 | setMapperClass(Class) Legt den Mapper für den Job fest. |
8 | setReducerClass(Class) Legt den Reduzierer für den Job fest. |
9 | setPartitionerClass(Class) Legt den Partitionierer für den Job fest. |
10 | setCombinerClass(Class) Legt den Kombinierer für den Job fest. |
Mapper-Klasse
Die Mapper-Klasse definiert den Map-Job. Ordnet eingegebene Schlüssel-Wert-Paare einer Reihe von Zwischen-Schlüssel-Wert-Paaren zu. Karten sind die einzelnen Aufgaben, die die Eingabedatensätze in Zwischendatensätze umwandeln. Die transformierten Zwischendatensätze müssen nicht vom gleichen Typ sein wie die Eingabedatensätze. Ein gegebenes Eingangspaar kann null oder vielen Ausgangspaaren zugeordnet werden.
Methode
mapist die bekannteste Methode der Mapper-Klasse. Die Syntax ist unten definiert -
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
Diese Methode wird einmal für jedes Schlüssel-Wert-Paar in der Eingabeaufteilung aufgerufen.
Reduzierklasse
Die Reducer-Klasse definiert den Reduce-Job in MapReduce. Es reduziert eine Reihe von Zwischenwerten, die einen Schlüssel gemeinsam haben, auf eine kleinere Reihe von Werten. Reduzierungsimplementierungen können über die JobContext.getConfiguration () -Methode auf die Konfiguration für einen Job zugreifen. Ein Reduzierer hat drei Hauptphasen - Mischen, Sortieren und Reduzieren.
Shuffle - Der Reduzierer kopiert die sortierte Ausgabe von jedem Mapper über HTTP über das Netzwerk.
Sort- Das Framework sortiert die Reducer-Eingaben nach Schlüsseln (da verschiedene Mapper möglicherweise denselben Schlüssel ausgegeben haben). Die Shuffle- und Sortierphasen treten gleichzeitig auf, dh während die Ausgaben abgerufen werden, werden sie zusammengeführt.
Reduce - In dieser Phase wird die Methode redu (Object, Iterable, Context) für jeden <Schlüssel (Sammlung von Werten)> in den sortierten Eingaben aufgerufen.
Methode
reduceist die bekannteste Methode der Reducer-Klasse. Die Syntax ist unten definiert -
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
Diese Methode wird einmal für jeden Schlüssel in der Sammlung von Schlüssel-Wert-Paaren aufgerufen.