Eingang Splits in Hadoop MapReduce des

Die Art und Weise HDFS wurde eingerichtet, bricht es sehr große Dateien in großen Blöcken (zB Messung 128MB) und speichert drei Kopien dieser Blöcke auf verschiedenen Knoten im Cluster. HDFS hat kein Bewusstsein für den Inhalt dieser Dateien.

In GARN, wenn ein MapReduce Auftrag gestartet wird, erstellt der Resource Manager (die Cluster-Ressource-Management und Job-Scheduling-Einrichtung) ein Application Master-Daemon nach dem Lebenszyklus des Job zu suchen. (In Hadoop 1, überwacht die Jobtracker einzelne Aufträge sowie die Abwicklung der Job-Scheduling und Cluster-Ressourcenmanagement.)

Eines der ersten Dinge, die Anwendung Meister tut, ist festzustellen, welche Dateiblöcke zur Verarbeitung benötigt werden. Der Application Master fordert Details aus dem NameNode auf, wo die Repliken der benötigten Datenblöcke gespeichert sind. Mit Hilfe der Standortdaten für die Dateiblöcke, macht die Anwendung Master-Anfragen an den Ressourcen-Manager Karte Aufgaben bearbeiten bestimmte Blöcke auf den Slave-Knoten zu haben, wo sie gespeichert sind.

Der Schlüssel zu einer effizienten MapReduce Verarbeitung besteht darin, dass, soweit möglich, Daten verarbeitet örtlich - auf dem Slave-Knoten, wo sie gespeichert sind.

Bevor wir uns an, wie die Datenblöcke verarbeitet werden, müssen Sie genauer an, wie Hadoop speichert Daten zu suchen. In Hadoop, werden die Dateien der einzelnen Datensätzen besteht, die letztlich eine nach einer von Mapper Aufgaben verarbeitet werden.

Zum Beispiel enthält die Probe Datensatz Informationen über abgeschlossene Flüge innerhalb der Vereinigten Staaten zwischen 1987 und 2008.

Um die Beispieldatensatz herunterladen, öffnen Sie den Firefox-Browser innerhalb der VM, und gehen Sie auf die dataexpo Seite.

Sie haben eine große Datei für jedes Jahr, und in jeder Datei, jede einzelne Zeile stellt einen einzelnen Flug. Mit anderen Worten stellt eine Zeile einen Datensatz. Nun, denken Sie daran, dass die Blockgröße für das Hadoop-Cluster 64MB ist, was bedeutet, dass die Lichtdatendateien sind gebrochen in Stücke von genau 64 MB.

Haben Sie das Problem? Wenn jede Karte Aufgabe, alle Datensätze in einem bestimmten Datenblock verarbeitet, was auf diese Aufzeichnungen geschieht, die Blockgrenzen hinausgehen? Datei-Blöcke sind genau 64 MB (oder was auch immer Sie setzen die Blockgröße zu sein), und weil HDFS keine Vorstellung hat, was in der Datei blockiert, kann es nicht beurteilen, wenn ein Datensatz möglicherweise in ein anderes Block verschütten.

Um dieses Problem zu lösen, nutzt Hadoop eine logische Darstellung der gespeicherten Daten in Dateiblöcke, bekannt als Eingabe Splits. Wenn ein MapReduce Job Client die Eingangs Splits berechnet, Zahlen ist es, wo die erste ganze Datensatz in einem Block beginnt und wo der letzte Datensatz im Block endet.

In Fällen, in denen der letzte Datensatz in einem Block unvollständig ist, umfasst die Eingabe Split-Standortinformationen für den nächsten Block und dem Byte der Daten-Offset erforderlich, um die Aufzeichnung zu beenden.

Die Abbildung zeigt diese Beziehung zwischen Datenblöcken und Eingabe Splits.

bild0.jpg

Sie können die Anwendung Master-Daemon (oder Jobtracker, wenn Sie in Hadoop 1 sind) konfigurieren die Eingabe zu berechnen, anstatt den Job Client teilt, die für Arbeitsplätze schneller sein würde, eine große Anzahl von Datenblöcken verarbeitet.

MapReduce Datenverarbeitung wird durch dieses Konzept der Eingangs Splits angetrieben. Die Anzahl der Eingangs Splits, die für eine bestimmte Anwendung berechnet werden, bestimmt die Anzahl der Mapper Aufgaben. Jede dieser Aufgaben Mapper zugeordnet ist, wo möglich, zu einem Slave-Knoten, auf dem die Eingangs Split gespeichert ist. Der Ressourcen-Manager (oder Jobtracker, wenn Sie in Hadoop 1 sind) tut sein Bestes, dass die Eingabe Splits lokal verarbeitet werden, zu gewährleisten.

Menü