Frage an mapreduce, hadoop – hadoop: unterschied zwischen 0 reduzierer und identitätsreduzierer?

24

Ich versuche nur, mein Verständnis des Unterschieds zwischen 0-Reduzierer und Identitätsreduzierer zu bestätigen.

0 Reducer bedeutet, dass der Reduktionsschritt übersprungen wird und die Mapper-Ausgabe das endgültige Ergebnis darstelltIdentitätsreduzierer bedeutet, dass dann noch gemischt / sortiert wird?

Deine Antwort

4   die antwort
37

Wenn Sie keine Sortierung der Kartenergebnisse benötigen - Sie setzen 0 reduziert, und der Job heißt nur Karte.
Wenn Sie die Zuordnungsergebnisse sortieren müssen, aber keine Aggregation benötigen, wählen Sie Identitätsreduzierer.
Und um das Bild zu vervollständigen, haben wir einen dritten Fall: Wir brauchen Aggregation und in diesem Fall brauchen wir Reduzierer.

3

(mapred.reduce.tasks = 0) und "Standardreduzierer", der Identitätsreduzierer ist(mapred.reduce.tasks = 1 usw.) Wenn Sie "No Reducer" verwenden, gibt es nach der MAP-Phase keine Partitionierungs- und Mischprozesse. In diesem Fall erhalten Sie daher ohne weitere Verarbeitung eine "reine" Ausgabe Ihrer Mapper. Es hilft bei der Entwicklung und beim Debuggen von Anwendungen, aber nicht nur.

3

ung durchführen, sollten Sie die Kartenausgabe reduzieren, um ein Gesamtergebnis zu erhalten. Wenn Sie nur die Wörter in Großbuchstaben ändern möchten, brauchen Sie kein Reduzieren.

5

rs besteht darin, alle Ergebnisse in Ausgabedateien zu kombinieren. Dies kann nützlich sein, wenn Sie Amazon Web Services verwenden, um direkt in S3 zu schreiben, insbesondere, wenn die Mapper-Ausgabe gering ist (z. B. grep / search for a record) und Sie viele Mapper haben (z. B. 1000).

Yitong - es gibt zusätzlichen Aufwand, wenn die Identitätsreduzierer über gar keinen verwendet werden, da die Mapper-Ausgaben in X-Buckets gehasht und dann an die X-Reduzierer gesendet werden müssen (dh wo X die gewünschte Anzahl von Ausgabedateien ist), sortiert und Dann im Ausgabeverzeichnis von HDFS / S3 / etc. Wenn Sie eine Menge Daten haben, müssen Sie mit diesem zusätzlichen Aufwand vorsichtig sein, da er in einigen Fällen erheblich sein kann. Alternativ können Sie beim Speichern in HDFS verwendenhdfs cat um die Ausgabe aller Dateien an einen Ort zu streamen. Ich weiß nicht, ob S3 einen ähnlichen Mechanismus zum Lesen von Streams hat. Dolan Antenucci
Hallo Dolan, könnten Sie etwas über die Verwendung von Identity Reducer ausarbeiten, um die Ergebnisse in weniger Dateien zu kombinieren? Ich hatte ähnliche Probleme - viele kleine Dateien, die durch reine Kartenjobs generiert wurden. Wäre es im Vergleich zu Nur-Karten-Jobs weniger effizient? Yitong Zhou

Verwandte Fragen