HDFS | HDFS-Architektur | HDFS-Komponenten

Inhalt

Überblick

  • Familiarícese con el Verteiltes Dateisystem die Hadoop (HDFS)
  • Comprender los componentes de HDFS

Einführung

Heutzutage, es habitual tratar con cantidades masivas de datos. Desde su próximo mensaje de WhatsApp hasta su próximo Tweet, está creando datos en cada paso cuando interactúa con la tecnología. Ahora multiplique eso por 4.5 mil millones de personas en Internet: ¡las matemáticas son simplemente alucinantes!

Aber, ¿alguna vez se preguntó cómo manejar esos datos? ¿Está almacenado en una sola máquina? ¿Y si falla la máquina? ¿Perderás tus adorables tweets de las 3 BIN * tos *?

hdfs-architecture-2890746

La respuesta es No. Estoy bastante seguro de que ya estás pensando en Hadoop. Hadoop es un marco asombroso. Con Hadoop a su lado, Sie können die erstaunlichen Fähigkeiten des verteilten Dateisystems von Hadoop nutzen (HDFS), die Speicherkomponente von Hadoop. Es ist wahrscheinlich die wichtigste Komponente von Hadoop und erfordert eine ausführliche Erklärung.

Dann, In diesem Artikel, wir werden lernen, was das verteilte Dateisystem von Hadoop wirklich ist (HDFS) und seine verschiedenen Komponenten. Was ist mehr, wir werden sehen, was HDFS funktionieren lässt, das ist es, was es so besonders macht. Lassen Sie uns herausfinden!

Inhaltsverzeichnis

  • Was ist das verteilte Dateisystem von Hadoop (HDFS)?
  • Was sind die Komponenten von HDFS?
    • Blöcke in HDFS?
    • Namenode in HDFS
    • Datenknoten in HDFS
    • Knoten Sekundär in HDFS
  • Verwaltung der Replikation
    • Replikation von Blöcken
    • Was ist ein Rack in Hadoop?
    • Rack-Bewusstsein

Was ist das verteilte Dateisystem von Hadoop (HDFS)?

Es ist schwierig, große Datenmengen auf einer einzigen Maschine zu speichern. Deswegen, es necesario dividir los datos en fragmentos más pequeños y almacenarlos en varias máquinas.

Los sistemas de archivos que administran el almacenamiento en una red de máquinas se denominan sistemas de archivos distribuidos.

Das verteilte Dateisystem von Hadoop (HDFS) es el componente de almacenamiento de Hadoop. Todos los datos almacenados en Hadoop se almacenan de manera distribuida en un grupo de máquinas. Pero tiene algunas propiedades que definen su existencia.

  • Enormes volúmenesAl ser un sistema de archivos distribuido, es altamente capaz de almacenar petabytes de datos sin ningún problema técnico.
  • Zugriff auf DatenSe basa en la filosofía de que “el patrón de procesamiento de datos más eficaz es escribir una vez y leer muchas veces”.
  • Económico HDFS se ejecuta en un grupo de hardware básico. Estas son máquinas económicas que se pueden comprar a cualquier proveedor.

¿Cuáles son los componentes del sistema de archivos distribuido de Hadoop (HDFS)?

HDFS tiene dos componentes principales, allgemein gesagt: bloques de datos y nodos que almacenan esos bloques de datos. Pero hay más de lo que parece. Dann, veamos esto uno por uno para comprenderlo mejor.

Bloques HDFS

HDFS divide un archivo en unidades más pequeñas. Cada una de estas unidades se almacena en diferentes máquinas del Cluster. Aber trotzdem, esto es transparente para el usuario que trabaja en HDFS. Für Sie, parece almacenar todos los datos en una sola máquina.

Estas unidades más pequeñas son las Blöcke in HDFS. El tamaño de cada uno de estos bloques es de 128 MB de forma predeterminada, puede cambiarlo fácilmente según los requisitos. Deswegen, si tuviera un archivo de 512 MB, würde in 4 Blöcke aufgeteilt, die speichern 128 MB jeweils.

hadoop-hdfs-blöcke-5933520

Aber trotzdem, si tuviera un archivo de 524 MB groß, würde in 5 Blöcke. 4 davon würden speichern 128 MB jeweils, was entspricht 512 MB. Und der fünfte würde die 12 verbleibenden MB speichern. Korrekt! Dieser letzte Block wird nicht die 128 vollständigen MB der Festplatte belegen.

hadoop-hdfs-blocks-split-9474833

Aber, du musst dich fragen, Warum eine so große Menge in einem einzigen Block?? Warum nicht mehrere Blöcke von 10 KB jeweils?? Gut, Die Datenmenge, mit der wir normalerweise in Hadoop arbeiten, liegt im Bereich von Petabyte oder mehr..

Deswegen, Wenn wir kleine Blöcke erstellen,, würden wir mit einer kolossalen Anzahl von Blöcken enden.. Das würde bedeuten, dass wir mit ebenso großen Metadaten bezüglich des Speicherorts der Blöcke umgehen müssten., was viel Overhead erzeugen würde.. Und das wollen wir wirklich nicht.!

Es gibt mehrere Vorteile, Daten in Blöcken zu speichern, anstatt die gesamte Datei zu speichern.

  • Die Datei selbst wäre zu groß, um sie auf einer einzelnen Festplatte zu speichern. Deswegen, Es ist ratsam, sie auf verschiedene Maschinen des Clusters zu verteilen.
  • Dies würde auch eine angemessene Arbeitslastverteilung ermöglichen und eine Überlastung einer einzelnen Maschine verhindern, indem das Parallelitätsprinzip genutzt wird.

Jetzt, du musst dich fragen, Was ist mit den Maschinen im Cluster?? Wie speichern sie die Blöcke und wo werden die Metadaten gespeichert?? Lassen Sie es uns herausfinden.

Namenode in HDFS

HDFS arbeitet in einer Master-Worker-Architektur, Das bedeutet, dass es einen Master-Knoten und mehrere Workerknoten im Cluster gibt. Der Master-Knoten ist der Namenode.

Namenode ist der Hauptknoten, der auf einem unabhängigen Knoten des Clusters läuft.

  • Verwaltet den Namespace des Dateisystems, Was der Baum des Dateisystems oder die Hierarchie der Dateien und Verzeichnisse ist.
  • Speichert Informationen wie Dateibesitzer, Dateiberechtigungen, etc. Für alle Dateien.
  • Kennt auch den Speicherort aller Blöcke einer Datei und ihre Größe.

All diese Informationen werden persistent auf der lokalen Festplatte in Form von zwei Dateien gespeichert: Fsimage Ja Edit-Log.

  • Fsimage Speichert Informationen über Dateien und Verzeichnisse im Dateisystem. Für Dateien, Speichert den Replikationsgrad, die Änderungs- und Zugriffszeiten, die Zugriffsberechtigungen, die Blöcke, aus denen die Datei besteht, und deren Größen. Für Verzeichnisse, Speichert die Änderungszeit und Berechtigungen.
  • Edit-Log Zweitens, verfolgt alle Schreibvorgänge, die der Client durchführt. Dies wird regelmäßig in den In-Memory-Metadaten aktualisiert, um Leseanfragen zu bedienen.

Immer wenn ein Client Informationen in HDFS schreiben oder aus HDFS lesen möchte, verbindet er sich mit dem Namenode. Der Namenode gibt dem Client die Position der Blöcke zurück und die Operation wird durchgeführt.

Jawohl, das ist wahr, Der Namenode speichert die Blöcke nicht. Dafür, Wir haben separate Knoten.

Datenknoten in HDFS

Datenknoten sind die Arbeitknoten. Sie sind kostengünstige Basis-Hardware, die leicht zum Cluster hinzugefügt werden kann.

Datenknoten sie sind verantwortlich für das Speichern, abzurufen, Replizieren, Löschen, etc. von Blöcken, wenn der Namenode dies anfordert.

Sie senden regelmäßig Heartbeats zum Namenode, damit dieser über ihren Zustand informiert bleibt. Damit, ein Datenknoten Sendet auch eine Liste der Blöcke, die darin gespeichert sind, damit der Namenode die Zuordnung der Blöcke zu den Datanodes in seinem Speicher verwalten kann.

Aber zusätzlich zu diesen beiden Knotentypen im Cluster, Gibt es auch einen weiteren Knoten, der Sekundärnamenknoten genannt wird. Mal sehen, was das ist.

Sekundärnamenknoten in HDFS

Angenommen, wir müssen den Knoten neu starten Namenode, was im Falle eines Ausfalls passieren kann. Das würde bedeuten, dass wir das Fsimage von der Festplatte in den Speicher kopieren müssen. Was ist mehr, wir müssten auch die letzte Kopie des Edit Logs in das Fsimage kopieren, um alle Transaktionen nachzuverfolgen. Aber wenn wir den Knoten nach längerer Zeit neu starten, dann könnte das Edit-Log in der Größe zugenommen haben. Dies würde bedeuten, dass es lange dauern würde, die Transaktionen aus dem Edit-Log anzuwenden. Und während dieser Zeit, wäre das Dateisystem offline. Deswegen, um dieses Problem zu lösen, bringen wir das Sekundärer Namensknoten.

Sekundärer Namensknoten es ist ein weiterer Knoten im Cluster, dessen Hauptaufgabe darin besteht, regelmäßig das Edit-Log mit FsImage zusammenzuführen und Kontrollpunkte für die Metadaten des primären Dateisystems im Speicher zu erzeugen. Dies ist auch bekannt als Checkpointing.

checkpointing-2088073

Aber das Verfahren zur Erstellung von Kontrollpunkten ist rechenintensiv und benötigt viel Speicher, weshalb der sekundäre Namenode auf einem separaten Knoten des Clusters ausgeführt wird.

Aber trotzdem, trotz seines Namens, Der sekundäre Namenode fungiert nicht als Namenode. Simplemente está ahí para hacer Checkpointing y mantener una copia de la última Fsimage.

Gestión de la replicación en HDFS

Jetzt, una de las mejores características de HDFS es la replicación de bloques, lo que lo hace muy confiable. Aber, ¿cómo replica los bloques y dónde los almacena? Respondamos esas preguntas ahora.

Replicación de bloques

HDFS es un componente de almacenamiento confiable de Hadoop. Esto se debe a que cada bloque almacenado en el sistema de archivos se replica en diferentes nodos de datos del clúster. Esto hace que HDFS sea tolerante a errores.

El factor de replicación predeterminado en HDFS es 3. Esto significa que cada bloque tendrá dos copias más, cada una almacenada en DataNodes separados en el clúster. Aber trotzdem, Diese Zahl ist konfigurierbar.

replication-5333742

Aber Sie müssen sich fragen, Bedeutet das nicht, dass wir zu viel Speicherplatz verwenden? Zum Beispiel, wenn wir haben 5 Blöcke von 128 MB jeweils, das entspricht 5 * 128 * 3 = 1920 MB. Wahr. Aber diese Knoten sind Standard-Hardware. Wir können den Cluster problemlos skalieren, um weitere dieser Maschinen hinzuzufügen. Die Kosten für den Kauf von Maschinen sind viel niedriger als die Kosten für den Verlust von Daten!

Jetzt, du musst dich fragen, Wie entscheidet der Namenode, auf welchem Datanode die Replikate gespeichert werden sollen? Gut, Bevor wir diese Frage beantworten, müssen wir einen Blick darauf werfen, was ein Rack in Hadoop ist.

Was ist ein Rack in Hadoop?

EIN Regal ist eine Sammlung von Maschinen (30-40 in Hadoop) die am selben physischen Standort gespeichert sind. Es gibt mehrere Racks in einem Hadoop-Cluster, alle verbunden über Switches.

hadoop-hdfs-rack-2761186

Rack-Bewusstsein

Die Replikatspeicherung ist ein Kompromiss zwischen Zuverlässigkeit und Lese-Bandbreite / Schreiben. Um die Zuverlässigkeit zu erhöhen, müssen wir Replikate von Blöcken auf verschiedenen Racks und Datanodes speichern, um die Fehlertoleranz zu erhöhen. Während die Schreibbandbreite geringer ist, wenn die Replikate auf demselben Knoten gespeichert werden. Deswegen, hat Hadoop eine Standardstrategie, um mit diesem Dilemma umzugehen, auch bekannt als Rack-Bewusstsein Algorithmus.

Zum Beispiel, wenn der Replikationsfaktor eines Blocks 3, das erste Replikat auf demselben Datanode gespeichert wird, auf dem der Client schreibt. Das zweite Replikat wird auf einem anderen Datanode, aber in einem anderen Rack gespeichert, zufällig ausgewählt. Während das dritte Replikat im selben Rack wie das zweite, aber auf einem anderen Datanode gespeichert wird, wieder zufällig gewählt. Aber trotzdem, wenn der Replikationsfaktor größer wäre, würden die folgenden Replikate auf zufälligen Datenknoten im Cluster gespeichert.

hadoop-hdfs-rack-awareness-6364073

Abschließende Anmerkungen

Ich hoffe, Sie haben bereits ein solides Verständnis davon, was das verteilte Dateisystem von Hadoop ist (HDFS), welche wichtigen Komponenten es hat und wie es Daten speichert. Aber trotzdem, es gibt noch einige Konzepte, die wir in Bezug auf das verteilte Dateisystem von Hadoop behandeln müssen (HDFS), aber das ist eine Geschichte für einen anderen Artikel.

Zur Zeit, ich empfehle Ihnen, die folgenden Artikel zu lesen, um Hadoop und diese Welt von Big Data besser zu verstehen.

Schließlich, aber nicht weniger wichtig, ich empfehle zu lesen Hadoop: Tom Whites ultimativer Leitfaden. Dieser Artikel wurde stark davon inspiriert.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher