Werden Setup- und Bereinigungsmethoden in den einzelnen Mapper- bzw. Reduktionsaufgaben aufgerufen? Oder werden sie zu Beginn von Mapper- und Reducer-Jobs insgesamt nur einmal aufgerufen?
Antworten:
21 für die Antwort № 1Sie werden für jede Aufgabe aufgerufen. Wenn also 20 Mapper ausgeführt werden, wird die Einrichtung / Bereinigung für jeden einzelnen aufgerufen.
Ein Gotcha ist die Standardausführungsmethode für beideMapper and Reducer fängt keine Ausnahmen um die Map / Reduce-Methoden ab. Wenn in diesen Methoden eine Ausnahme ausgelöst wird, wird die Bereinigungsmethode nicht aufgerufen.
5 für die Antwort № 2
Eine Klarstellung ist hilfreich. Die Setup- / Bereinigungsmethoden werden für die Initialisierung und Bereinigung auf Taskebene verwendet. Innerhalb einer Task erfolgt die erste Initialisierung mit einem einzelnen Aufruf der setup () -Methode. Anschließend werden alle Aufrufe der map () [oder reduction ()] -Funktion ausgeführt. Danach wird ein weiterer einzelner Aufruf an die cleanup () -Methode gesendet, bevor die Task beendet wird.
3 für die Antwort № 3
Es wird pro Mapper Task oder Reducer Task aufgerufen. Hier ist der Hadoop-Code.
public void run(Context context) throws IOException, InterruptedException {
setup(context);
try {
while (context.nextKey()) {
reduce(context.getCurrentKey(), context.getValues(), context);
}
} finally {
cleanup(context);
}
}
1 für die Antwort № 4
Entsprechend der mapreduce Dokumentation Setup und Bereinigung werden für jede Mapper- und Reducer-Aufgabe aufgerufen.
1 für die Antwort № 5
Auf dem Reduzierer können Sie im Job job.setNumReduceTasks (1) ausführen. Auf diese Weise wird die Einrichtung und Bereinigung des Reduzierers nur einmal ausgeführt.