Der Verlauf, die Eigenschaften, der anwendbare Szenariobetriebsmechanismus, das Datenlayout, der Lese- und Schreibprozess, der Fehlertoleranzmechanismus usw. von Big Data HDFS

Autor: Zen und die Kunst der Computerprogrammierung

1. Einleitung

Das schnelle Wachstum, die hohe Parallelität, die große Datenmenge, die vielfältigen Datenquellen und die sich dynamisch ändernden Dateneigenschaften von Big Data haben die Datenanalyse und das Daten-Mining vor große Herausforderungen gestellt. HDFS ist eine Schlüsselkomponente für die Speicherung großer Datenmengen. HDFS ist ein verteiltes Dateisystem, das hauptsächlich zum Speichern und Verarbeiten sehr großer Datensätze verwendet wird. HDFS kann kleine Dateien auf verschiedenen Computern problemlos zu großen Dateien zusammenfassen und so die Integrität und Konsistenz großer Dateien durch hohe Fehlertoleranz gewährleisten. HDFS unterstützt den Streaming-Zugriffsmodus, hat einen hohen Durchsatz und eine geringe Latenz und kann die Anforderungen verschiedener Geschäftsszenarien erfüllen. HDFS spielt eine wichtige Rolle im Hadoop-Ökosystem. Da Internetunternehmen, Finanzinstitute usw. neue Anwendungen von Big Data übernehmen, ist HDFS nach und nach zu einer immer beliebter werdenden Technologie geworden.
Dieser Artikel beginnt zunächst mit dem Hintergrund von HDFS und stellt die Geschichte, Eigenschaften, anwendbaren Szenarien usw. von HDFS vor. Anschließend werden das Designkonzept und die Designziele von HDFS erläutert. Anschließend werden der Betriebsmechanismus, das Datenlayout usw. vorgestellt. Lese- und Schreibprozess und Fehlertoleranzmechanismus von HDFS usw. und erläutern die relevanten technischen Wissenspunkte von HDFS anhand von Beispielen. Abschließend werden wir über die zukünftige Entwicklungsrichtung und einige Herausforderungen von HDFS sprechen.

2.Grundlegende Konzepte und Terminologie

2.1 Einführung in Hadoop

Hadoop (Open Source Scalable Computing Framework) ist ein Open-Source-Projekt, das von der Apache Foundation ins Leben gerufen wurde. Es handelt sich um ein Framework, das Sie bei der Durchführung umfangreicher Datenverarbeitung unterstützen kann. Es wurde von der Apache Software Foundation entwickelt und folgt der Apache-Lizenzvereinbarung. Es umfasst hauptsächlich HDFS (Hadoop Distributed File System), MapReduce, YARN (Yet Another Resource Negotiator) und andere Module. Es verfügt über hohe Skalierbarkeit, hohe Verfügbarkeit, Fehlertoleranz und Notfallwiederherstellungsfunktionen und bietet leistungsstarke Toolunterstützung, Framework-Unterstützung und eine ökologische Umgebung . .

2.1.1 HDFS

1997 wechselte Google vom festplattenbasierten MapReduce-Framework zum netzwerkbasierten Dateisystem GFS. GFS hat ein neues Dateisystem HDFS basierend auf den Dateispeicheranforderungen von Google entwickelt. Es unterteilt die Daten in Blöcke fester Größe und speichert diese Blöcke dann auf verschiedenen Computern, um eine Datenblockierung zu erreichen. Typspeicher. HDFS erfüllt die Anforderungen von Big-Data-Anwendungen, indem es eine hohe Fehlertoleranz und elastische Erweiterungsfunktionen bietet. HDFS wird häufig in der Big-Data-Verarbeitung eingesetzt, insbesondere in den Bereichen Cloud Computing, Big-Data-Suchmaschinen, Protokollsammlung, Empfehlungssysteme, Suche und anderen Bereichen.
Zusammensetzung von HDFS

  • NameNode: Der Masterknoten des Dateisystems verwaltet den Namespace des Dateisystems und die Metadateninformationen des Clusters.
  • DataNodes: Datenknoten, Dateidaten speichern und Blockdienste bereitstellen.
  • SecondaryNameNode (SNN): Sekundärknoten, der zum Aufrechterhalten des HDFS-Status und zum Ausführen von Fsck-Vorgängen verwendet wird.
  • Datanode-Daemon (DataNode-Prozess): Jeder Worker-Knoten startet diesen Prozess und ist für die Blockübertragung von Datenblöcken und die Ausführung von Client-Betriebsanforderungen verantwortlich.
  • Client: Verwenden Sie den Client (z. B. den Hadoop-Befehl), um HDFS zu bedienen, z. B. Verzeichnisse zu erstellen, Dateien hoch- oder herunterzuladen usw.
    Vorteile von HDFS:
  • Unterstützt sehr große Dateien: HDFS bietet eine Kapazität von mehr als 100 TB, geeignet für umfangreiche Datenanalysen.
  • Hohe Fehlertoleranz: HDFS verwendet eine Master-Slave-Architektur, die ausgefallene Knoten automatisch wechseln kann, um die Datensicherheit zu gewährleisten.
  • Hoher Durchsatz: HDFS bietet eine gute Leistung und kann problemlos Petabytes an Daten lesen.
  • Zuverlässigkeit: HDFS bietet eine automatische Prüfpunktfunktion, um die Datensicherheit zu gewährleisten.
    Nachteile von HDFS:
  • Unterstützt kein zufälliges Schreiben: HDFS verwendet den Anhängemodus zum Schreiben von Dateien, unterstützt kein zufälliges Schreiben und kann nur sequentiell schreiben.
  • Keine Transaktionsunterstützung: HDFS bietet keine Transaktionsunterstützung und kann die Datenkonsistenz nicht garantieren.

2.2 Einführung in MapReduce

Google MapReduce ist die Big-Data-Verarbeitungstechnologie von Google und ein gemeinsames Big-Data-Verarbeitungsmodell innerhalb von Google. Es unterteilt den komplexen Big-Data-Betriebsprozess in mehrere unabhängige Aufgaben, führt diese parallel aus und fasst schließlich die Ergebnisse zusammen, um das Endergebnis zu erhalten.
Das Programmiermodell von MapReduce folgt „Map-Reduce“, das heißt, die Eingabedaten werden zunächst in logisch unabhängige Aufgaben (Map) unterteilt und diese Aufgaben dann zusammengestellt (reduziert), um die Ergebnisse zu erhalten. Hier finden Sie eine kurze Einführung in mehrere wichtige Konzepte von MapReduce.

2.2.1 Job

Von Benutzern geschriebene MapReduce-Jobs werden Jobs genannt. Jeder Job enthält drei Hauptelemente: Mapper, Reducer sowie Eingabe- und Ausgabepfade.

  • Mapper: Verantwortlich für das Lesen der Eingabedaten, die Konvertierung jedes Datensatzes in Schlüssel-Wert-Paare und die anschließende Übergabe an den Reducer zur Verarbeitung.
  • Reduzierer: Verantwortlich für die Zusammenfassung der Ausgabe von Mapper und das Zusammenführen von Datensätzen mit demselben Schlüssel zu einer Gruppe.
  • Eingabe- und Ausgabepfade: Geben Sie die Eingabe- und Ausgabepfade des Jobs an.

2.2.2 Partition

Im eigentlichen Datenverarbeitungsprozess tritt das Problem der Datenverzerrung auf, weshalb eine bestimmte Karte oder Reduzierung langsam verarbeitet wird. Zu diesem Zeitpunkt kann das Problem der Datenverzerrung durch Erhöhen der Anzahl der Reduzierer gelöst werden. Bevor Sie jedoch die Anzahl der Reduzierer erhöhen, müssen Sie die Daten partitionieren und gleichmäßig auf mehrere Intervalle verteilen. Dies kann die Netzwerkübertragungszeit verkürzen und die Effizienz verbessern. Die Partition kann die Verarbeitung derselben Daten auf derselben Karte ermöglichen oder reduzieren, wodurch die Netzwerkübertragungs- und E/A-Wartezeit reduziert und der Zweck der Beschleunigung der Jobausführung erreicht wird.

2.2.3 Combiner-Funktion

Wenn der Reducer die Verarbeitung einer Partition abschließt, kann er ein Zwischenergebnis erzeugen. Wird dieses Zwischenergebnis nicht sofort verwendet, kann es direkt verworfen werden. Um dieses Problem zu lösen, wird Combiner verwendet. Der Combiner führt eine teilweise Verarbeitung auf der Kartenseite durch und seine Auswirkung ist beim Mischen sichtbar. Bevor der Reducer ausgeführt wird, sammelt der Combiner die Ausgabe aller Maps, aggregiert sie zu einem Wert und übergibt ihn an den Reducer. Dadurch werden übermäßige Serialisierungs- und Deserialisierungsvorgänge auf der Reducer-Seite vermieden. Combiner hat nur sehr geringe Auswirkungen auf die Leistung, da er nur auf der Kartenseite auftritt.

2.3 Einführung in Garn

Apache Hadoop YARN (Yet Another Resource Negotiator) ist ein weiteres Ressourcenverwaltungssystem. Es handelt sich um einen Open-Source-Cluster-Manager, der Anwendungen im Hadoop-Framework ausführen kann und gleichzeitig Ressourcenplanungs- und Fehlerwiederherstellungsfunktionen bereitstellt. YARN macht Hadoop anpassungsfähiger an verschiedene Umgebungen und Maßstäbe, bietet eine einheitliche und transparente Schnittstelle und hilft Benutzern, die Verwendung von Hadoop zu vereinfachen. YARN besteht aus zwei Hauptkomponenten: ResourceManager und NodeManager. ResourceManager ist die zentrale Komponente von YARN und verantwortlich für die Ressourcenverwaltung und -zuweisung des gesamten Clusters. Es empfängt Clientanfragen, beantragt dynamisch Ressourcen für Anwendungen und koordiniert verschiedene NodeManager, um die benötigten Ressourcen zuzuweisen. NodeManager ist ein Mitarbeiter in YARN, der für die Ausführung von Aufgaben sowie die Überwachung und Berichterstattung über den Status des Clusters verantwortlich ist. Die beiden arbeiten zusammen, um Benutzern eine verteilte Computerplattform bereitzustellen.

3. HDFS-Übersicht

3.1 Hintergrundeinführung

3.1.1 Einführung in HDFS

Das Hadoop Distributed File System (HDFS) ist ein Unterprojekt des Hadoop-Projekts, das hauptsächlich das Problem der Big-Data-Speicherung löst. HDFS ist ein verteiltes Dateisystem, das Dateispeicherung, Datenaustausch zwischen Clustern und Fehlertoleranzmechanismen unterstützt. HDFS ist hochoptimiert, schnell und umfassend. HDFS kann auf günstigen kommerziellen Servern bereitgestellt und über das Netzwerk aufgerufen werden. Es ist äußerst fehlertolerant und kann große Datenmengen speichern, verarbeiten und analysieren. HDFS bietet eine neue Lösung für die massive Datenverarbeitung von Hadoop.

3.1.2 HDFS-Architektur

HDFS besteht aus drei oder mehr Servern, die als Cluster fungieren. HDFS arbeitet im Master/Slave-Modus, einer ist der Namensknoten NameNode und die anderen sind Datenknoten DataNode.
NameNode ist der Masterknoten von HDFS und für die Verwaltung des Namespace des Dateisystems und der Metadateninformationen des Clusters verantwortlich. Es ist dafür verantwortlich, regelmäßig den Status der zugrunde liegenden Hardware abzurufen, die Standortinformationen der Daten an den DataNode zu melden und Lese- und Schreibanforderungen des Clients zu verarbeiten. Außerdem werden Metadaten der Dateien im gesamten Cluster verwaltet, z. B. Dateinamen, Attribute, Blockinformationen usw. HDFS ermöglicht den Zugriff auf Daten über HTTP oder NFS. HDFS kann auf günstigen kommerziellen Servern bereitgestellt werden, über das Netzwerk abgerufen werden und verfügt über eine hohe Fehlertoleranz. DataNode ist der Arbeitsknoten von HDFS, der Dateidaten speichert und Blockdienste bereitstellt. Es empfängt Lese- und Schreibanforderungen von anderen DataNodes oder Clients, speichert die Daten auf der lokalen Festplatte und gibt sie dann an den Anforderer zurück.

3.2 Designziele

HDFS ist ein sehr wichtiges Modul in Hadoop. Es berücksichtigt vollständig die Anforderungen an die Datenspeicherung und -verarbeitung, ohne auf zugrunde liegende Speichergeräte angewiesen zu sein. HDFS bietet eine hohe Fehlertoleranz und einen hohen Durchsatz und unterstützt sehr große Dateien. Die Designziele von HDFS lauten wie folgt:

3.2.1 Hohe Fehlertoleranz

HDFS erreicht Datenredundanz durch einen Kopiermechanismus und kann automatisch ein Failover durchführen und ausgefallene Knoten nahtlos ersetzen. Es erkennt ausgefallene DataNodes durch Heartbeat-Erkennung und kopiert die darauf befindlichen Blöcke auf andere Knoten, um eine hohe Datenverfügbarkeit zu erreichen. HDFS verfügt außerdem über gute Komprimierungsfunktionen für große Dateien, wodurch die Speicherkosten effektiv gesenkt werden können.

3.2.2 Hoher Durchsatz

HDFS verwendet ein Streaming-Zugriffsmodell, um Lese- und Schreibvorgänge mit geringer Latenz zu ermöglichen. HDFS kann einen asynchronen Kommunikationsmechanismus verwenden, sodass Lese- und Schreibvorgänge für eine einzelne Datei schnell abgeschlossen werden können. HDFS unterstützt das Lesen und Schreiben von Daten mit hohem Durchsatz und kann Terabytes an Datenspeicherung und -verarbeitung unterstützen.

3.2.3 Transparenter Datenzugriff

HDFS bietet zwei Zugriffsmethoden: NFS und HTTP. NFS ist ein Netzwerkdateisystem, das über das Netzwerk auf HDFS-Daten zugreift. NFS bietet eine bessere Leistung, ist jedoch durch die Netzwerkbandbreite begrenzt. HTTP ist das Hypertext Transfer Protocol. Der Zugriff auf HDFS-Daten erfolgt über einen Browser und Dateien können online angezeigt werden, Datenänderungen werden jedoch nicht unterstützt. HDFS übergibt die Datenzugriffskontrolle vollständig an den Client und steuert die Zugriffsrechte über NameNode.

4. HDFS-Betriebsmechanismus

4.1 Datenblock

HDFS verwendet Datenblöcke (Blöcke) als Grundeinheit zum Organisieren von Dateien. Eine Datei besteht aus vielen Datenblöcken. Die Standardgröße eines Datenblocks beträgt 64 MB. Daten werden in Einheiten von Datenblöcken gespeichert und gelesen. Die Größe des Datenblocks bestimmt die Effizienz von HDFS und begrenzt außerdem die maximale Größe einer einzelnen Datei. Die Auswahl der Datenblöcke beeinflusst auch den Durchsatz von HDFS.

4.2 NameNode&SecondaryNameNode (SNN)

NameNode und SecondaryNameNode (SNN) von HDFS sind eine Master-Slave-Architektur. NameNode ist der Masterknoten, der für die Verwaltung des Namespace des Dateisystems und der Metadateninformationen des Clusters verantwortlich ist, einschließlich Datei-zu-Datenblock-Zuordnung, Berechtigungskontrolle, Kontingenteinstellungen usw.; SNN ist der Hilfsknoten, der zur Verwaltung von HDFS verwendet wird Status und Fsck-Vorgänge ausführen. .

4.2.1 Namensraum

Alle Dateien und Ordner in einem Dateisystem werden in einem Namensraum eindeutig identifiziert. Das Stammverzeichnis des Dateisystems ist „/“, und alle Dateien befinden sich in diesem Verzeichnis. Benutzer können auch Unterverzeichnisse erstellen, die jeweils eigene Dateien und Unterverzeichnisse enthalten können. Die Dateisystembaumstruktur von HDFS vereinfacht Client-Vorgänge.

4.2.2 Metadaten

Zu den Metadaten gehören der Name der Datei, der Datenblock, in dem sich die Daten befinden, Berechtigungen, der Zeitpunkt der letzten Änderung usw. Metadaten sind auch einer der Kerninhalte von HDFS, und die Speicherung von Metadaten kann die hohe Verfügbarkeit von HDFS unterstützen.

4.2.3 Kontrollpunkte

Checkpoints sind ein wichtiges Mittel zur Datenkonsistenz. HDFS führt regelmäßig Prüfpunkte durch und speichert die aktuellen Namespace- und Blockinformationen im Speicher. Checkpoints können zur Datenwiederherstellung im Falle eines unerwarteten Absturzes verwendet werden.

4.3 DataNode (DataNode-Prozess)

Der DataNode von HDFS ist der Ort, an dem Dateidaten gespeichert werden. Es befindet sich im HDFS-Cluster, speichert Daten und antwortet auf Lese- und Schreibanfragen von Clients. Er kann am Cluster als allgemeiner Rechenknoten oder als Slave-Knoten des NameNode teilnehmen und am Kopieren, Lesen und Schreiben von Blöcken teilnehmen. Der DataNode meldet regelmäßig Heartbeats an den NameNode und meldet Informationen wie den aktuell verwendeten Speicherplatz und den gesamten Speicherplatz. Wenn ein DataNode innerhalb eines bestimmten Zeitraums keinen Heartbeat meldet, gilt er als ausgefallen und alle Datenblöcke auf dem Knoten werden auf andere DataNodes kopiert.

4.3.1 Datensicherung

HDFS-Datenblöcke verfügen standardmäßig über drei Kopien, und diese Kopien werden in verschiedenen Datenknoten gespeichert. Wenn sich drei Kopien eines Datenblocks auf den Datenknoten A, B und C befinden, bedeutet dies, dass Backups auf verschiedenen Datenknoten vorhanden sind.

4.3.2 Schreibverarbeitung

Das Schreiben von Daten in HDFS erfolgt normalerweise in Form von Datenblöcken. HDFS verteilt den Datenfluss gemäß der Lastausgleichsrichtlinie gleichmäßig auf mehrere Knoten. Kopien jedes Datenblocks werden dauerhaft in verschiedenen Datenknoten gespeichert, und Schreibvorgänge führen nicht zu Blockierungen.

4.3.3 Leseverarbeitung

HDFS-Leseanforderungen werden zuerst an welche Datenknoten gesendet und dann von diesen Knoten gelesen. HDFS leitet Lesevorgänge basierend auf der Lastausgleichsrichtlinie an den nächstgelegenen Knoten weiter, wodurch eine Überlastung eines einzelnen Knotens vermieden werden kann. HDFS unterstützt den Streaming-Zugriffsmodus, wodurch Verzögerungen durch die Netzwerkübertragung bis zu einem gewissen Grad vermieden werden können.

5. HDFS-Lese- und Schreibprozess

5.1 Schreibvorgang

Der Schreibvorgang von HDFS wird in zwei Schritten abgeschlossen: Zuerst fordert der Client den NameNode auf, eine Datei zu erstellen, und der NameNode prüft, ob die Datei bereits vorhanden ist. Wenn sie nicht vorhanden ist, erstellt er eine neue Datei und gibt sie an den Client zurück . Zweitens schreibt der Client Daten in den angegebenen DataNode-Knoten und der DataNode hängt die Daten an das Ende des entsprechenden Datenblocks. Vor dem Schreiben eines Datenblocks wird geprüft, ob die Anzahl der Replikate der Mindestanzahl entspricht. Wenn Sie zufrieden sind, synchronisieren Sie den Datenblock mit den beiden Datenknoten; andernfalls erstellen Sie eine dritte Kopie.

5.2 Lesevorgang

Der Lesevorgang von HDFS erfolgt in zwei Schritten: Zunächst fragt der Client den NameNode nach dem Datenknoten ab, auf dem sich die zu lesende Datei befindet, und sendet die Anfrage an den entsprechenden Datenknoten. Zweitens liest der DataNode die Daten von der Festplatte und gibt sie an den Client zurück.

6. HDFS-Fehlertoleranzmechanismus

6.1 Kopiermechanismus

HDFS verwendet einen Replikatmechanismus, um Datenredundanz zu erreichen, und kann ein automatisches Failover durchführen, um ausgefallene Knoten nahtlos zu ersetzen. Es erkennt ausgefallene DataNodes durch Heartbeat-Erkennung und kopiert die darauf befindlichen Blöcke auf andere Knoten, um eine hohe Datenverfügbarkeit zu erreichen.
HDFS speichert Datenblöcke auf verschiedenen Knoten, um ein unabhängiges Speichersystem zu bilden, dh Datenblockkopien. Die Anzahl der Kopien ist im Allgemeinen auf 3 festgelegt. Drei Kopien von Datenblöcken werden auf verschiedenen Knoten gespeichert, was sich positiv auf den Fehlertoleranzmechanismus von HDFS auswirkt. Wenn einige Knoten beschädigt sind, erkennt HDFS dies automatisch und kopiert die entsprechenden Kopien von den beschädigten Knoten auf normale Knoten, um eine automatische Datenwiederherstellung zu erreichen.
Reicht die Anzahl der Kopien nicht aus, müssen neue Kopien erstellt werden, um Datenredundanz zu erreichen. HDFS prüft vor dem Schreiben eines Datenblocks, ob die Anzahl der Replikate die Mindestanzahl erreicht. Wenn Sie zufrieden sind, synchronisieren Sie den Datenblock mit den beiden Datenknoten; andernfalls erstellen Sie eine dritte Kopie. Reicht die Anzahl der Kopien nicht aus, müssen neue Kopien erstellt werden, um Datenredundanz zu erreichen. HDFS scannt regelmäßig den Zustand der zugrunde liegenden Hardware und entscheidet je nach Situation, ob neue Kopien erstellt werden.

6.2 Blockscannen und Datenüberprüfung

HDFS verwendet den Heartbeat-Erkennungsmechanismus, um ausgefallene DataNodes zu erkennen. Wenn ein DataNode ausfällt, löst HDFS automatisch einen Datenblock-Scan aus, um die Datenblöcke auf dem ausgefallenen Knoten zu überprüfen. Der Scanvorgang überprüft die Prüfsumme jedes Datenblocks. Wenn ein Fehler gefunden wird, wird der fehlerhafte Datenblock erneut auf andere DataNodes kopiert.

7. Detaillierte Erläuterung des HDFS-Lese- und Schreibvorgangs

7.1 Schreibvorgang

7.1.1 Dateien erstellen

Das Erstellen einer Datei umfasst zwei Schritte: Zuerst fordert der Client den NameNode auf, eine Datei zu erstellen. Der NameNode prüft, ob die Datei bereits existiert. Wenn sie nicht existiert, erstellt er eine neue Datei und gibt sie an den Client zurück. Zweitens schreibt der Client Daten in den angegebenen DataNode-Knoten und der DataNode hängt die Daten an das Ende des entsprechenden Datenblocks.
Die folgende Abbildung zeigt einen typischen Schreibvorgang:

Erstellen Sie eine Datei
  1. Der Client fordert die Erstellung der Datei /user/test/file1 an.
  2. Der NameNode empfängt die Anfrage und generiert eine weltweit eindeutige Kennung für die Datei.
  3. NameNode gibt die Dateiidentifikation an den Client zurück.
Suchen Sie die Schreibposition
  1. Der Client wählt einen DataNode aus und schreibt die Datei in das entsprechende Verzeichnis des Knotens.
  2. Die Datei ist in mehrere Datenblöcke unterteilt.
  3. Die Datenblocknummer wird erhöht.
  4. Der Client markiert das erste Byte jedes Datenblocks.
  5. Notieren Sie die Datenblocknummer in Metadaten.
  6. Schreiben Sie den Datenblock auf die Festplatte.
Replikatknoten benachrichtigen
  1. Der Client benachrichtigt den NameNode über Metadateninformationen.
  2. NameNode gibt Metadateninformationen an andere Datenknoten weiter.
  3. Ein NameNode verwaltet standardmäßig ein Replikat, sofern er nicht manuell heruntergefahren wird.

7.1.2 Daten schreiben

Das Schreiben von Daten umfasst zwei Phasen: Erstens schreibt der Client Daten in den angegebenen DataNode-Knoten, und DataNode hängt die Daten an das Ende des entsprechenden Datenblocks. Zweitens benachrichtigt NameNode andere Daten, nachdem er festgestellt hat, dass die Daten erfolgreich geschrieben wurden Knoten der Metadateninformationen. Vollständige Synchronisierung der Datenblöcke.
Die folgende Abbildung zeigt den Datenschreibvorgang:

Suchen Sie die Schreibposition
  1. Der Client fordert die Lokalisierung des Schreibspeicherorts an und bestimmt den Speicherort des Datenblocks anhand der Metadateninformationen im Cache.
  2. Fordern Sie den entsprechenden Datenknoten auf, Daten zu schreiben.
  3. Datenblöcke hängen Daten auf der Festplatte an.
  4. Datenblöcke werden im Speicher gesperrt, um wiederholtes Schreiben zu verhindern.
Replikatknoten benachrichtigen
  1. Nachdem die Daten erfolgreich geschrieben wurden, wird der NameNode benachrichtigt.
  2. NameNode aktualisiert Metadateninformationen.
  3. Daten werden mit anderen Datenknoten synchronisiert.

7.1.3 Datei schließen

Das Schließen einer Datei umfasst zwei Schritte: Zuerst ruft der NameNode eine Liste aller Datenblöcke der Datei ab; dann benachrichtigt der NameNode den Datenknoten über die Metadateninformationen und schließt die Datei.
Die folgende Abbildung zeigt den Vorgang zum Schließen der Datei:

Liste der Dateidatenblöcke abrufen
  1. NameNode Ruft eine Liste aller Datenblöcke der Datei ab.
  2. Speichern Sie die Datenblockliste im Speicher, um spätere Vorgänge zu erleichtern.
Replikatknoten benachrichtigen
  1. Schließen Sie die Datei und benachrichtigen Sie andere Datenknoten.
  2. Löschen Sie abgelaufene Kopien.

7.2 Lesevorgang

7.2.1 Finden Sie die Zieldatei

Das Suchen der Zieldatei umfasst zwei Phasen: Zuerst fordert der Client den NameNode auf, die Zieldatei zu finden, und der NameNode findet die Metadateninformationen basierend auf dem Dateinamen. Anschließend initiiert der Client eine Leseanforderung an jeden gefundenen Datenknoten.
Die folgende Abbildung zeigt den Vorgang zum Suchen der Zieldatei:

Finden Sie Metadateninformationen
1. 客户端请求 NameNode 查找目标文件,NameNode 返回文件标识。
  1. Der Client findet die Metadatei anhand der Dateikennung und analysiert die Speicherortinformationen der Datei.
  2. Der Client fragt den lokalen Cache nach Metadateninformationen ab.
  3. Befindet es sich nicht im Cache, wird der entsprechende DataNode-Knoten angefordert.

7.2.2 Datenspeicherort ermitteln

Das Auffinden des Datenspeicherorts umfasst zwei Phasen: Zuerst initiiert der Client eine Leseanforderung an jeden gefundenen Datenknoten, und der DataNode liest den Datenblock basierend auf den Standortinformationen des Datenblocks in den Speicherpuffer. Anschließend analysiert der Client ihn Der Speicherpuffer gibt die erforderlichen Daten aus.
Die folgende Abbildung veranschaulicht die Vorgänge zur Ortung von Positionierungsdaten:

Datenblock lesen
 1. 客户端向 DataNode 发起请求,读取数据块。
2. 数据块在磁盘上加载到内存缓冲区。
3. 从内存缓冲区解析出所需数据。

7.2.3 Datenüberprüfung

Die Datenüberprüfung umfasst zwei Phasen: Zuerst analysiert der Client die erforderlichen Daten aus dem Speicherpuffer; dann überprüft der Client die Daten, um sicherzustellen, dass die Daten korrekt sind.

8. Die zukünftige Entwicklungsrichtung und Herausforderungen von HDFS

8.1 Datenlokalität

HDFS erreicht die Datenlokalität durch den Blockmechanismus. Da zwischen Blöcken redundante Kopien vorhanden sind, können mehrere Clients gleichzeitig auf Daten zugreifen. Die Blockgröße beträgt standardmäßig 64 MB, sodass sich HDFS leichter an die Datenlokalität anpassen lässt. HDFS unterstützt derzeit keinen blockübergreifenden Datenzugriff, entwickelt jedoch den Zugriff auf blockübergreifende Bereichsdaten.

8.2 Datenkomprimierung

HDFS unterstützt die Datenkomprimierung. Die Komprimierung spart Speicherplatz und Netzwerkübertragungszeit und verbessert die Datenverarbeitungsleistung. Derzeit verwendet HDFS standardmäßig das Gzip-Komprimierungsformat, und das Komprimierungsformat kann mithilfe von Konfigurationsparametern geändert werden.

8.3 Blockmigration

Unter Datenblockmigration versteht man das Verschieben von Daten vom aktuellen Standort auf andere Speicherknoten, um die hohe Verfügbarkeit von Datenblöcken sicherzustellen. HDFS unterstützt die Blockmigration und gewährleistet die Datensicherheit durch Heartbeat-Nachrichten, Block-Scanning und Kopieraktualisierungen. Der aktuelle Blockmigrationsalgorithmus von HDFS wird auf der Grundlage von Regeln ausgewählt und berücksichtigt nicht bewusst die Datenlokalität. HDFS arbeitet an neuen Blockmigrationsstrategien, um die Datenlokalität zu verbessern.

8.4 Datenschutz

HDFS bietet einen Datenschutzmechanismus. HDFS kann Benutzerzugriffsrechte auf Dateien festlegen und die Klassifizierung der Datenvertraulichkeit erzwingen. Durch die Datenvertraulichkeitsklassifizierung können verschiedene Datenebenen unterschieden und unterschiedliche Ebenen der Zugriffskontrolle implementiert werden.

9. Anhang

9.1 Einige Fragen

F: Wie viele Dateien unterstützt HDFS?
A: Dateien und Verzeichnisse in HDFS werden im Dateisystembaum von HDFS eindeutig identifiziert. HDFS unterstützt keine unbegrenzte Anzahl von Dateien. Jedes Verzeichnis ermöglicht die Erstellung von bis zu 1000 Unterverzeichnissen und Dateien, sodass theoretisch 10 ^ 10 Dateien unterstützt werden können.
F: Wie kann festgestellt werden, ob mehrere Kopien eines Datenblocks erforderlich sind?
A: Da die Kopien der Datenblöcke auf verschiedene Knoten verteilt sind, muss sichergestellt werden, dass die Anzahl der Kopien der Datenblöcke größer oder gleich der Anzahl der Datenknoten ist, um eine hohe Verfügbarkeit der Datenblöcke sicherzustellen. HDFS empfiehlt, dass die Anzahl der Replikate nicht geringer sein sollte als die Anzahl der Datenknoten, um eine hohe Verfügbarkeit der Datenblöcke aufrechtzuerhalten. HDFS empfiehlt außerdem, dass die Anzahl der Replikate nicht kleiner oder gleich 3 sein sollte.
F: Muss NameNode nach dem HDFS-Schreibvorgang benachrichtigt werden?
A: Der Schreibvorgang von HDFS wird in zwei Schritten abgeschlossen: Zuerst fordert der Client den NameNode auf, eine Datei zu erstellen. Der NameNode prüft, ob die Datei bereits existiert. Wenn sie nicht existiert, erstellt er eine neue Datei und gibt sie an den zurück Klient. Zweitens schreibt der Client Daten in den angegebenen DataNode-Knoten und der DataNode hängt die Daten an das Ende des entsprechenden Datenblocks. Vor dem Schreiben eines Datenblocks wird geprüft, ob die Anzahl der Replikate der Mindestanzahl entspricht. Wenn Sie zufrieden sind, synchronisieren Sie den Datenblock mit den beiden Datenknoten; andernfalls erstellen Sie eine dritte Kopie. Erst wenn der NameNode den Datenknoten über die Metadateninformationen informiert und die Datei geschlossen wird, endet der Schreibvorgang.
F: Unterstützt es den Daten-Streaming-Zugriff?
A: HDFS unterstützt den Daten-Streaming-Zugriff, wodurch Verzögerungen durch die Netzwerkübertragung bis zu einem gewissen Grad vermieden werden können.
F: Was ist die empfohlene HDFS-Blockgröße?
A: Die empfohlene Blockgröße beträgt 64 MB. Die Blockgröße kann angepasst werden, aber wenn sie zu groß ist, kann dies zu Leistungseinbußen führen, und wenn sie zu klein ist, kann dies zu häufigen Speicherbereinigungen und Festplattenscans führen.
F: Unterstützt HDFS die Verschlüsselung?
A: Unterstützt Datenverschlüsselung, Daten werden während der Übertragung und Speicherung verschlüsselt.
F: Unterstützt HDFS die Kerberos-Authentifizierung?
A: Unterstützt die Kerberos-Authentifizierung.
F: Wird für SSD die Verwendung eines Solid-State-Laufwerks empfohlen?
A: Für SSD wird die Verwendung eines Solid-State-Laufwerks empfohlen. HDFS kann SSDs mit sehr hohen IOPS unterstützen.
F: Unterstützt es die Kerberos-Verschlüsselungsauthentifizierung?
A: Unterstützt die Kerberos-Verschlüsselungsauthentifizierung und die Datenübertragung wird während der Übertragung verschlüsselt.

Acho que você gosta

Origin blog.csdn.net/universsky2015/article/details/132126736
Recomendado
Clasificación