Wie werden Hadoop-Prozessdatensätze über Blockgrenzen hinweg aufgeteilt?

LautHadoop - The Definitive Guide

Die von FileInputFormats definierten logischen Datensätze passen normalerweise nicht gut in HDFS-Blöcke. Beispielsweise sind die logischen Datensätze eines TextInputFormats Zeilen, die HDFS-Grenzen häufig überschreiten. Dies hat keine Auswirkung auf die Funktionsweise Ihres Programms - z. B. werden Zeilen nicht übersehen oder unterbrochen -, aber es lohnt sich zu wissen, da dies bedeutet, dass datenlokale Karten (dh Karten, die auf demselben Host wie ihre ausgeführt werden) vorhanden sind Eingabedaten) führt einige Fernlesevorgänge durch. Der dadurch verursachte geringe Aufwand ist normalerweise nicht signifikant.

Angenommen, eine Datensatzzeile ist auf zwei Blöcke (b1 und b2) aufgeteilt. Der Mapper, der den ersten Block (b1) verarbeitet, wird bemerken, dass die letzte Zeile kein EOL-Trennzeichen hat und holt den Rest der Zeile vom nächsten Datenblock (b2).

Wie stellt der Mapper, der den zweiten Block (b2) verarbeitet, fest, dass der erste Datensatz unvollständig ist und ab dem zweiten Datensatz im Block (b2) verarbeitet werden soll?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage