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

HDFS-Tutorial – Eine vollständige Einführung in HDFS für Anfänger

Möchten Sie wissen, wie Hadoop riesige Datenmengen zuverlässig und fehlertolerant speichert?

In diesem HDFS-Lernprogramm besprechen wir eine der Kernkomponenten von Hadoop, das Hadoop Distributed File System (HDFS).

Zuerst sehen wir eine Einführung in Distributed FileSystem. Dann werden wir das Hadoop Distributed FileSystem untersuchen. Der Artikel erläutert den Grund für die Verwendung von HDFS, HDFS-Architektur und Blöcken in HDFS.

Der Artikel führt auch einige der Funktionen von Hadoop HDFS auf. Außerdem erfahren Sie mehr über die Heartbeat-Meldungen in Hadoop HDFS.

Dieses HDFS-Lernprogramm bietet die vollständige Einführung in das zuverlässigste Speicher-Hadoop-HDFS.

Beginnen wir zunächst mit einer Einführung in Distributed FileSystem.

Verteiltes Dateisystem

Wenn der Datensatz die Speicherkapazität eines einzelnen Computers überschreitet, ist es zwingend erforderlich, den Datensatz auf mehrere separate Computer zu partitionieren. Das Dateisystem, das die Daten über das Netzwerk von Maschinen verwaltet, wird als verteiltes Dateisystem bezeichnet .

Ein verteiltes Dateisystem ist ein Dateisystem, das es uns ermöglicht, Daten auf mehreren Maschinen oder Knoten in einem Cluster zu speichern und mehreren Benutzern den Zugriff auf Daten zu ermöglichen.

Da das DFS auf dem Netzwerk basiert, treten alle Komplikationen der Netzwerkprogrammierung in Kraft und machen ein verteiltes Dateisystem komplexer als das normale Dateisystem. Eine der größten Herausforderungen in DFS besteht darin, Knotenausfälle ohne Datenverlust zu tolerieren.

Hadoop verfügt über ein verteiltes Dateisystem namens Hadoop Distributed Filesystem zum Speichern großer Datenmengen und bietet gleichzeitig Fehlertoleranz und Hochverfügbarkeit.

Neugierig auf HDFS? Beginnen wir also jetzt mit dem HDFS-Tutorial.

HDFS-Tutorial – Einführung

Hadoop Distributed FileSystem (HDFS) ist ein Java-basiertes verteiltes Dateisystem, das in Hadoop zum Speichern einer großen Menge strukturierter oder unstrukturierter Daten mit einer Größe von Gigabyte bis Petabyte über einen Cluster von Standardhardware verwendet wird. Es ist der zuverlässigste bekannte Speicher auf dem Planeten.

In HDFS werden Daten an mehreren Orten gespeichert. Wenn also einer der Computer ausfällt, können Daten von einem anderen Computer abgerufen werden, der die Kopie der Daten enthält. Dadurch ist es hochgradig fehlertolerant und stellt sicher, dass selbst bei einem Hardwareausfall kein Datenverlust auftritt.

Es ist die Hauptkomponente von Hadoop, zusammen mit MapReduce, YARN und anderen gängigen Dienstprogrammen.

Es folgt ein Write-Once-Read-Many Philosophie, die die Datenkohärenz vereinfacht und einen Zugriff mit hohem Durchsatz ermöglicht.

Warum HDFS?

In der heutigen IT-Welt befinden sich fast 75 % der weltweiten Daten in Hadoop HDFS. Dies hat folgenden Grund:

  • HDFS speichert Daten auf handelsüblicher Hardware, wodurch keine High-End-Maschinen zum Speichern von Big Data erforderlich sind. Bietet somit einen wirtschaftlichen Speicher zum Speichern von Big Data.
  • HDFS folgt dem effizientesten Datenverarbeitungsmuster, nämlich dem Write-Once-Read-Many-Times-Muster. Ein aus verschiedenen Quellen generierter Datensatz wird kopiert, und dann werden die verschiedenen Analysen an diesem Datensatz im Laufe der Zeit durchgeführt. Daher eignet es sich am besten für die Stapelverarbeitung.
  • HDFS kann Daten beliebiger Größe speichern, die aus beliebigen Quellen in beliebigen Formaten generiert wurden, entweder strukturiert oder unstrukturiert.
  • Das Write-One-Read-Many-Modell lockert die Anforderungen an die Parallelitätssteuerung. Auf die Daten kann ohne Probleme bezüglich der Datenkohärenz mehrfach zugegriffen werden.
  • HDFS arbeitet auf der Annahme der Datenlokalität, dass das Verschieben von Berechnungen zu Daten viel einfacher und schneller ist als das Verschieben von Daten zur Recheneinheit. HDFS erleichtert das Auffinden von Verarbeitungslogik in der Nähe der Daten, anstatt Daten in den Anwendungsbereich zu verschieben. Dadurch werden die Netzwerküberlastung und die Gesamtdurchlaufzeit reduziert.

Lassen Sie uns in diesem HDFS-Tutorial also zur HDFS-Architektur springen.

HDFS-Architektur

Hadoop DFS folgt Master-Slave die Architektur. Das HDFS besteht aus zwei Arten von Knoten, nämlich Master-Knoten und Slave-Knoten. Der Master-Knoten verwaltet den Namensraum des Dateisystems, das heißt, er speichert die Metadaten zu den Dateiblöcken.

Die Slave-Knoten speichern die Benutzerdaten und sind verantwortlich für die Datenverarbeitung basierend auf den Anweisungen des Master-Knotens.

HDFS-Master

Master in HDFS ist das Herzstück von Hadoop HDFS. Sie sind die High-End-Maschinen, die Metadaten speichern, die sich auf alle in HDFS gespeicherten Dateien beziehen. Es verwaltet und wartet den Namensraum des Dateisystems und stellt den Slave-Knoten Anweisungen zur Verfügung.

Der NameNode ist der Masterknoten in Hadoop HDFS.

HDFS-Slave

Slave-Knoten sind für die Speicherung der eigentlichen Geschäftsdaten verantwortlich. Sie sind die normalen Konfigurationsmaschinen (Commodity-Hardware), die die Datensätze auf Anweisung des Master-Knotens speichern und verarbeiten.

Die Datenknoten sind die Slave-Knoten in Hadoop HDFS.

HDFS-NameNode

NameNode ist der Masterknoten. Es verwaltet Dateisystem-Namespace-Operationen wie Öffnen/Schließen, Umbenennen von Dateien und Verzeichnissen. NameNode ordnet Datenblöcke DataNodes zu und zeichnet jede Änderung auf, die am Namensraum des Dateisystems vorgenommen wird.

HDFS-Datenknoten

DataNodes sind die Slave-Knoten, die Lese-/Schreibanforderungen von HDFS-Clients verarbeiten. DataNodes erstellt, löscht und repliziert Datenblöcke gemäß den Anweisungen des maßgeblichen Namensknotens.

Sie fragen sich, wie Daten in HDFS gespeichert werden?

Blöcke in HDFS

HDFS teilte die Dateien in blockgroße Stücke auf, die als Datenblöcke bezeichnet werden. Diese Blöcke werden über mehrere DataNodes im Cluster gespeichert. Die Standardblockgröße beträgt 128 MB. Wir können die Standardblockgröße je nach Clusterkonfiguration konfigurieren.

Für den Cluster mit High-End-Maschinen kann die Blockgröße groß gehalten werden (z. B. 256 MB oder mehr). Für den Cluster mit Maschinen mit einer Konfiguration wie 8 GB RAM kann die Blockgröße kleiner gehalten werden (wie 64 MB).

Außerdem erstellt HDFS Replikationen von Blöcken basierend auf dem Replikationsfaktor (eine Zahl, die die Gesamtzahl der Kopien eines Blocks einer Datei definiert). Standardmäßig ist der Replikationsfaktor 3. Das bedeutet, dass 3 Kopien jedes Blocks erstellt und über mehrere Knoten hinweg gespeichert werden.

Wenn einer der Datenknoten ausfällt, wird der Block von einem anderen Datenknoten abgerufen, der eine Kopie eines Blocks enthält. Dies macht HDFS-Fehlertoleranz.

Haben Sie darüber nachgedacht, wie NameNode einen DataNode-Fehler entdeckt?

DataNode-Fehler

Alle DataNodes in Hadoop HDFS senden kontinuierlich alle 3 Sekunden eine kleine Heartbeat-Nachricht (Signale) an NameNode, um „I am Alive“ zu sagen.

Wenn NameNode länger als 10 Minuten keine Heartbeat-Nachricht von einem bestimmten DataNode erhält, betrachtet es diesen DataNode als tot und beginnt mit der Erstellung einer Kopie von Blöcken, die auf diesem DataNode verfügbar waren.

NameNode weist die DataNodes, die eine Kopie dieser Daten enthalten, an, diese Daten auf anderen DataNodes zu replizieren, um die Replikation auszugleichen. Auf diese Weise erkennt NameNode einen DataNode-Fehler.

Möchten Sie wissen, wie NameNode Replikate auf verschiedenen DataNode platziert? Lassen Sie uns die Rack-Awareness in HDFS untersuchen, um eine Antwort auf die obige Frage zu erhalten.

Rack-Bewusstsein in HDFS

Hadoop HDFS speichert Daten über den Cluster von Commodity-Hardware. Um Fehlertoleranz bereitzustellen, werden Kopien von Blöcken erstellt und auf verschiedenen DataNodes gespeichert.

NameNode platziert die Replikate von Blöcken auf mehreren DataNodes, indem es dem Rack-Awareness-Algorithmus folgt, um sicherzustellen, dass kein Datenverlust auftritt, selbst wenn DataNode oder das gesamte Rack ausfällt. Der NameNode platziert das erste Replikat auf dem nächsten DataNode.

Es speichert die zweite Kopie auf einem anderen DataNode im selben Rack und die dritte Kopie auf einem anderen DataNode in einem anderen Rack.

Wenn der Replikationsfaktor 2 ist, platziert er die zweite Replik auf einem anderen DataNode in einem anderen Rack, sodass auch das System hochverfügbar ist, wenn ein komplettes Rack ausfällt.

Der Hauptzweck einer Richtlinie zur Platzierung von Replikaten im Rack ist die Verbesserung der Fehlertoleranz, Datenzuverlässigkeit und Verfügbarkeit.

Als Nächstes besprechen wir im HDFS-Tutorial einige Schlüsselfunktionen von Hadoop HDFS.

Wichtige Funktionen von Hadoop HDFS

1. Hohe Verfügbarkeit

Es ist ein hochverfügbares Dateisystem. In diesem Dateisystem werden Daten zwischen den Knoten im Hadoop-Cluster repliziert, indem eine Kopie der Blöcke auf den anderen im HDFS-Cluster vorhandenen Slaves erstellt wird. Wann immer also ein Benutzer auf diese Daten zugreifen möchte, kann er auf seine Daten von den Slaves zugreifen, die seine Blöcke enthalten.

2. Fehlertoleranz

Fehlertoleranz in Hadoop HDFS ist die Arbeitsstärke eines Systems unter ungünstigen Bedingungen. Es ist sehr fehlertolerant. Das Hadoop-Framework unterteilt Daten in Blöcke.

Danach erstellt es mehrere Kopien von Blöcken auf verschiedenen Computern im Cluster. Wenn also eine Maschine im Cluster ausfällt, kann ein Client problemlos auf seine Daten von der anderen Maschine zugreifen, die dieselbe Kopie von Datenblöcken enthält.

3. Hohe Zuverlässigkeit

HDFS bietet eine zuverlässige Datenspeicherung. Es kann Daten im Bereich von Hunderten von Petabyte speichern. HDFS speichert Daten zuverlässig auf einem Cluster. Es unterteilt die Daten in Blöcke. Anschließend speichert das Hadoop-Framework diese Blöcke auf im Cluster vorhandenen Knoten.

HDFS speichert Daten auch zuverlässig, indem es eine Kopie jedes einzelnen im Cluster vorhandenen Blocks erstellt. Bietet daher eine Fehlertoleranzeinrichtung.

4. Replikation

Die Datenreplikation ist eine einzigartige Funktion von HDFS. Die Replikation löst das Problem des Datenverlusts bei ungünstigen Bedingungen wie Hardwarefehlern, Knotenabstürzen usw. HDFS hält den Replikationsprozess in regelmäßigen Zeitabständen aufrecht.

Es erstellt auch weiterhin Repliken von Benutzerdaten auf verschiedenen Computern im Cluster. Wenn also ein Knoten ausfällt, kann der Benutzer auf die Daten anderer Maschinen zugreifen. Somit besteht keine Möglichkeit, Benutzerdaten zu verlieren.

5. Skalierbarkeit

Es speichert Daten auf mehreren Knoten im Cluster. Wenn also die Anforderungen steigen, können Sie den Cluster skalieren. In HDFS sind zwei Skalierbarkeitsmechanismen verfügbar:Vertikale und horizontale Skalierbarkeit.

6. Verteilter Speicher

HDFS-Funktionen werden über verteilte Speicherung und Replikation erreicht. Es speichert Daten verteilt über die Knoten. In Hadoop werden Daten in Blöcke unterteilt und auf den im Cluster vorhandenen Knoten gespeichert.

Danach erstellt es die Kopie jedes einzelnen Blocks und speichert es auf anderen Knoten. Wenn die einzelne Maschine im Cluster abstürzt, können wir einfach von den anderen Knoten, die ihre Replik enthalten, auf unsere Daten zugreifen.

Als Nächstes besprechen wir im HDFS-Tutorial einige nützliche HDFS-Operationen.

HDFS-Betrieb

Hadoop HDFS hat viele Ähnlichkeiten mit dem Linux-Dateisystem. Wir können fast alle Operationen ausführen, die wir mit einem lokalen Dateisystem ausführen können, wie z. B. ein Verzeichnis erstellen, die Datei kopieren, Berechtigungen ändern usw.

Es bietet auch verschiedene Zugriffsrechte wie Lesen, Schreiben und Ausführen für Benutzer, Gruppen und andere.

1. Vorgang lesen

Wenn der HDFS-Client eine Datei von HDFS lesen möchte, interagiert der Client zuerst mit NameNode. NameNode ist der einzige Ort, an dem Metadaten gespeichert werden. NameNode gibt die Adresse der Slaves an, wo Daten gespeichert werden. Dann interagiert der Client mit den angegebenen DataNodes und liest die Daten von dort.

Der HDFS-Client interagiert mit der verteilten Dateisystem-API. Dann sendet es eine Anfrage an NameNode, um eine Blockposition zu senden. NameNode überprüft zuerst, ob der Client über ausreichende Berechtigungen verfügt, um auf die Daten zuzugreifen, oder nicht? Danach teilt NameNode die Adresse mit, an der Daten im DataNode gespeichert sind.

NameNode stellt dem Client ein Token bereit, das er dem DataNode zum Lesen der Datei aus Sicherheitsgründen anzeigt. Wenn ein Client zum Lesen der Datei zu DataNode geht, erlaubt DataNode dem Client nach Überprüfung des Tokens, diesen bestimmten Block zu lesen.

Danach öffnet der Client den Eingabestream und beginnt mit dem Lesen von Daten aus den angegebenen DataNodes. Somit liest der Client auf diese Weise Daten direkt von DataNode.

2. Schreibvorgang

Zum Schreiben einer Datei interagiert der Client zunächst mit NameNode. HDFS NameNode liefert die Adresse des DataNode, auf den Daten vom Client geschrieben werden müssen.

Wenn der Client das Schreiben des Blocks beendet hat, beginnt der DataNode mit der Replikation des Blocks in einen anderen DataNode. Dann kopiert es den Block auf den dritten DataNode. Sobald die erforderliche Replikation erstellt wurde, sendet sie eine abschließende Bestätigung an den Client. Die Authentifizierung ist die gleiche wie beim Lesevorgang.

Der Client sendet unabhängig von unserem Replikationsfaktor nur 1 Kopie der Daten, während DataNodes die Blöcke replizieren. Das Schreiben einer Datei ist nicht kostspielig, da mehrere Blöcke parallel mehrere Blöcke auf mehrere DataNodes geschrieben werden.

Zusammenfassung

In der Schlussfolgerung des HDFS-Tutorials können wir sagen, dass Hadoop HDFS Daten auf verteilte Weise über den Cluster von Standardhardware speichert.

Hadoop HDFS ist ein bisher bekanntes hochzuverlässiges, fehlertolerantes und hochverfügbares Speichersystem. Es folgt der Master-Slave-Architektur, wobei NameNode der Master-Knoten und die DataNodes die Slave-Knoten sind.

Außerdem teilt das HDFS die Eingabedatei des Clients in Blöcke mit einer Größe von 128 MB auf, die wir gemäß unseren Anforderungen konfigurieren können. Es speichert auch Kopien von Blöcken, um Fehlertoleranz bereitzustellen.

NameNode befolgt die Rack-Awareness-Richtlinie zum Platzieren von Replikaten auf DataNode, um sicherzustellen, dass bei einem Maschinen- oder Hardwareausfall keine Daten verloren gehen. Darüber hinaus senden die DataNodes eine Heartbeat-Nachricht an NameNode, um sicherzustellen, dass sie am Leben sind.

Während des Lesens oder Schreibens einer Datei interagiert der Client zuerst mit dem NameNode.

Der Hadoop HDFS ist ein skalierbares, zuverlässiges, verteiltes, fehlertolerantes und hochverfügbares Speichersystem zum Speichern von Big Data.