HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Hadoop RecordReader Einführung, Arbeiten &Types

In unserem vorherigen Blog haben wir Hadoop untersucht Zähler im Detail. In diesem Tutorial werden wir nun den RecordReader in Hadoop besprechen.

Hier behandeln wir die Einführung in Hadoop RecordReader, die Funktionsweise von RecordReader. Wir werden auch die Arten von RecordReader in MapReduce und die Größe des einzelnen Datensatzes in Hadoop MapReduce in diesem MapReduce-Tutorial besprechen.

Was ist RecordReader in MapReduce?

Ein RecordReader konvertiert die byteorientierte Ansicht der Eingabe in eine datensatzorientierte Ansicht für den Mapper und Reduzierer Aufgaben zur Bearbeitung.

Um Hadoop RecordReader zu verstehen, müssen wir MapReduce Dataflow verstehen. Lassen Sie uns lernen, wie die Daten fließen:

MapReduce ist ein einfaches Modell der Datenverarbeitung. Eingaben und Ausgaben für die Map- und Reduce-Funktionen sind Schlüssel-Wert-Paare . Es folgt die allgemeine Form der Map- und Reduce-Funktionen:

  • Karte: (K1, V1) → Liste (K2, V2)
  • Reduzieren: (K2, Liste (V2)) → Liste (K3, V3)

Bevor die Verarbeitung beginnt, muss es wissen, welche Daten verarbeitet werden sollen. Also InputFormat Klasse hilft dabei. Diese Klasse wählt die Datei aus HDFS  aus das ist die Eingabe für die Kartenfunktion. Es ist auch für die Erstellung der Input-Splits verantwortlich.

Unterteilen Sie sie auch in Datensätze. Es teilt die Daten in die Anzahl der Splits (normalerweise 64/128 MB) in HDFS auf. Dies wird als InputSplit bezeichnet. InputSplit ist die logische Darstellung der Daten. In einem MapReduce-Job ist die Ausführungsanzahl von Map-Aufgaben gleich der Anzahl von InputSplits.

Durch den Aufruf von ‚getSplit ()‘ der Client berechnet, der die Spalten für den Job. Dann schickte sie an die Anwendung Master. Es verwendet ihre Speicherorte, um Zuordnungsaufgaben zu planen, die sie auf dem Cluster verarbeiten.

Danach übergibt die Zuordnungsaufgabe die Aufteilung an den createRecordReader () Methode. Daraus erhält es RecordReader für die Spaltung. RecordReader erzeugt Satz (Schlüssel-Wert-Paar). Dann geht es um die Kartenfunktion.

Hadoop RecordReader bei der MapReduce-Auftragsausführung verwendet die Daten innerhalb der Grenzen, die durch die Eingabeaufteilung erstellt werden. Und es schafft dann auf Schlüssel-Wert-Paare für den Mapper. Der „Start“ ist die Byte-Position in der Datei.

Beim Start beginnt Hadoop RecordReader mit der Generierung von Schlüssel/Wert-Paaren. Das „Ende“ ist, wo RecorReader aufhört, Datensätze zu lesen. In RecordReader werden die Daten von ihrer Quelle geladen.

Anschließend werden die Daten in Schlüssel-Wert-Paare konvertiert, die für das Lesen durch den Mapper geeignet sind. Es kommuniziert mit dem Inputsplit, bis das Lesen der Datei nicht abgeschlossen ist.

Wie RecorReader in Hadoop funktioniert?

Es ist mehr als Iterator über die Datensätze. Die Zuordnungsaufgabe verwendet einen Datensatz, um ein Schlüssel-Wert-Paar zu generieren, das sie an die Zuordnungsfunktion übergibt. Wir können dies auch sehen, indem wir die unten angegebene Run-Funktion des Mappers verwenden:

public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

Obwohl es für RecordReader nicht zwingend erforderlich ist, zwischen den Grenzen zu bleiben, die durch die Eingabeaufteilung erstellt wurden, um Schlüssel-Wert-Paare zu generieren, bleibt es normalerweise. Außerdem kann eine benutzerdefinierte Implementierung sogar mehr Daten außerhalb des Inputsplits lesen.

Dann nach dem Ausführen von setup () , der nächsteSchlüsselwert() wird im Kontext wiederholt. Dadurch werden die Schlüssel- und Wertobjekte für den Mapper gefüllt. Als Kontext ruft das Framework den Schlüsselwert vom Datensatzleser ab. Gehen Sie dann zu map() Methode, um ihre Arbeit zu erledigen.

Daher wird die Eingabe (Schlüsselwert) für die Zuordnungsfunktion gemäß der im Zuordnungscode erwähnten Logik verarbeitet. Wenn der Datensatz das Ende des Datensatzes erreicht, wird der nextKeyValue() Methode gibt false zurück.

Typen von Hadoop RecordReader

InputFormat definiert die RecordReader-Instanz in Hadoop. Standardmäßig konvertiert ReordReader mit TextInputFormat Daten in Schlüssel-Wert-Paare. TextInputFormat bietet auch zwei Arten von RecordReadern, die wie folgt sind:

1. LineRecordReader

Es ist der Standard-RecordReader. TextInputFormat stellt diese RecordReader. Es behandelt auch jede Zeile der Eingabedatei als neuen Wert. Dann ist der zugehörige Schlüssel ein Byte-Offset. Es überspringt immer die erste Zeile im Split (oder einen Teil davon), wenn es nicht der erste Split ist.

Es liest am Ende immer eine Zeile nach der Grenze des Splits (wenn Daten verfügbar sind, ist es also nicht der letzte Split).

2. SequenceFileRecordReader

Dieser Hadoop RecorReader liest Daten, die durch den Header einer Sequenzdatei angegeben sind.

Die maximale Größe der einzelnen Datensatz

Durch die Verwendung von unter Parameter setzen wir Maximalwert.

conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

Schlussfolgerung

Zusammenfassend erstellt Hadoop RecorReader die Eingabe (Schlüsselwert) für Mapper. Es verwendet auch TextInputFormat zum Konvertieren von Daten in Schlüssel-Wert-Paare.

Ich hoffe, Ihnen hat dieser Blog gefallen, wenn Sie Fragen zu Hadoop RecordReader haben, können Sie diese gerne mit uns teilen. Wir lösen sie gerne.