Die Kerntechnik zum Speichern von Dateien im Speicher liegt im Dateisystem, das die Betriebsumgebung verwendet. Im Gegensatz zu herkömmlichen Dateisystemen verwendet Hadoop ein anderes Dateisystem, das mit großen Datensätzen in einem verteilten Netzwerk umgeht. Es heißt Hadoop Distributed File System (HDFS) . Dieser Artikel stellt die Idee vor und enthält zunächst entsprechende Hintergrundinformationen.
Was ist ein Dateisystem?
Ein Dateisystem ist normalerweise eine Methode und Datenstruktur, die das Betriebssystem verwendet, um Dateien auf einer Festplatte oder Partition zu verwalten. Aus der Perspektive einer Magnetplatte sind alle Daten eine Ladung, die in Sektoren über Spuren hinweg gespeichert ist. Stellen Sie sich Spuren als spiralförmige Reihen und Sektoren als die winzigen Zellen über den spiralförmigen Spuren vor. Wenn wir nun die Festplatte auffordern, einige Daten zu lokalisieren, kann sie ihren Kopf bestenfalls auf einige Sektoren in der Spiralsequenz umleiten. Diese Rohdaten sind nicht aussagekräftig, es sei denn, das Betriebssystem kommt ins Spiel; es ist dafür zuständig, die Informationen aus einer Sammlung von Sektoren abzugrenzen, die als Datei erkannt werden sollen. Ein Betriebssystem organisiert die Informationen in einer Buchhaltungsdatenstruktur, die als Dateisystem bezeichnet wird. Diese Struktur definiert das Buchhaltungsmuster. Es gibt jedoch einige technische Unterschiede, wie Betriebssysteme diese Struktur verwalten. Beispielsweise verwendet Windows das FAT32-, NTFS-Modell, Linux verwendet EXT2, EXT3 und so weiter. Aber die Grundidee ist, dass sie alle die Daten nach einer definierten Struktur organisieren.
Die Dateisystemorganisation ist in erster Linie für die Verwaltung der Erstellung, Änderung und Löschung von Dateien (Verzeichnisse sind auch Dateien), Festplattenpartitionen, Dateigrößen usw. verantwortlich, und sie arbeiten direkt mit Rohsektoren einer Festplatte oder Partition.
Dateien in einem verteilten System
Die Merkmale eines verteilten Systems unterscheiden sich insofern, als der Speicher über mehrere Computer in einem Netzwerk verteilt ist. Ein einzelnes Repository kann keine so große Datenmenge enthalten. Wenn eine einzelne Maschine eine begrenzte Speicherkapazität und Verarbeitungsleistung hat, aber wenn der Verarbeitungsauftrag und die Speicherung auf Maschinen über das Netzwerk verteilt werden, werden die Leistung und Effizienz vielfältig. Dies eröffnet nicht nur die Möglichkeit umfangreicher Rechenleistung, sondern nutzt auch die vorhandene Infrastruktur. Dieses Ergebnis besteht darin, dass die Kosten minimiert werden, jedoch die Effizienz erhöht wird. Jede einzelne Maschine im Netzwerk wird zu einem potenziellen Arbeitspferd, das begrenzte Daten enthält und gleichzeitig Teil eines unbegrenzten Speichers und einer umfangreichen Verarbeitungsleistung ist. Der Kompromiss ist die Komplexität. Wenn dies mit innovativen Techniken nutzbar gemacht werden kann, ist ein verteiltes System hervorragend geeignet, um mit den Problemen von Big Data fertig zu werden. Das HDFS-Dateisystem zielt darauf ab, dies zu erreichen. Tatsächlich gibt es neben HDFS viele andere ähnliche verteilte Dateisysteme, wie z. B. GPFS (General Parallel File System) von IBM, Ceph (Wikipedia-Link:Liste verteilter Dateisysteme) und dergleichen. Sie alle versuchen, dieses Problem aus verschiedenen Richtungen mit unterschiedlichen Erfolgsquoten anzugehen.
HDFS-Übersicht
Das normale Dateisystem wurde entwickelt, um auf einer einzelnen Maschine oder einer einzelnen Betriebsumgebung zu funktionieren. Die Datensätze in Hadoop erfordern eine Speicherkapazität, die über das hinausgeht, was eine einzelne physische Maschine bereitstellen kann. Daher ist es unerlässlich, Daten auf mehrere Maschinen zu partitionieren. Dies erfordert einen speziellen Prozess, um die Dateien über das verteilte Netzwerk zu verwalten. HDFS ist das Dateisystem, das dieses Problem speziell angeht. Dieses Dateisystem ist komplexer als ein normales Dateisystem, da es mit Netzwerkprogrammierung, Fragmentierung, Fehlertoleranz, Kompatibilität mit dem lokalen Dateisystem usw. umgehen muss. Es ermöglicht Hadoop, Big-Data-Anwendungen auf mehreren Servern auszuführen. Es zeichnet sich durch eine hohe Fehlertoleranz mit hohem Datendurchsatz auf kostengünstiger Hardware aus. Das Ziel des HDFS-Dateisystems ist wie folgt:
- Um mit sehr großen Dateien umzugehen
- Der Streaming-Datenzugriff auf das Dateisystem muss ein Muster zum einmaligen Schreiben und mehrfachen Lesen nutzen.
- Laufen auf kostengünstiger handelsüblicher Hardware
- Es muss Datenzugriff mit geringer Latenz nutzen.
- Unterstützt eine riesige Anzahl von Dateien
- Unterstützung mehrerer Dateischreiber mit willkürlicher Dateiänderung
HDFS-Grundlagen
Eine kleinste Datenmenge, die gelesen und auf eine Festplatte geschrieben wird, hat die sogenannte Blockgröße . Typischerweise beträgt die Größe dieses Blocks 512 Byte, und Dateisystemblöcke umfassen einige Kilobyte. HDFS funktioniert nach dem gleichen Prinzip, aber die Größe des Blocks ist viel größer. Die größere Blockgröße nutzt die Suche, indem Suchvorgänge und damit Kosten minimiert werden. Diese Blöcke sind über sogenannte Cluster verteilt , die nichts anderes sind als Blöcke und Kopien von Blöcken auf verschiedenen Servern im Netzwerk. Einzelne Dateien werden über Server im Cluster repliziert.
Es gibt zwei Arten von Knoten, die im Cluster in einem Master-Slave-Muster arbeiten. Der Master-Knoten heißt Nameodes und der Worker-Knoten heißt datanodes . Über diese Knoten verwaltet HDFS den Datei- (und Verzeichnis-) Systembaum und die Metadaten. Tatsächlich wird eine Datei in Blöcke aufgeteilt und in einer Teilmenge von Datenknoten gespeichert über den Cluster zu verteilen. Der Datenknoten ist verantwortlich für Lese-, Schreib-, Blockerstellungs-, Lösch- und Replikationsanforderungen im Dateisystem.
Die Namenscodes , hingegen sind Server, die den Zugriff auf das Dateisystem überwachen und Datendateien im HDFS verwalten. Sie ordnen Blöcke dem Datenknoten zu und bearbeiten Anforderungen zum Öffnen, Schließen und Umbenennen von Dateien/Verzeichnissen.
Datenknoten sind der Kernteil des Dateisystems und erledigen die Aufgabe des Speicherns und Abrufens von Blockanfragen vom Client. Namensknoten ist der Betreuer, zu dem Datenknoten Prüfbericht. Das heißt, wenn Namenodes ausgelöscht werden, gehen die Informationen über die Dateien verloren. Daher stellt Hadoop sicher, dass der Namensknoten robust genug ist, um jegliche Art von Fehlern zu überstehen. Eine Technik, um dies sicherzustellen, besteht darin, es in einem sekundären Namensknoten zu sichern durch regelmäßiges Zusammenführen des Namespace-Images mit dem Bearbeitungsprotokoll. Der sekundäre Namensknoten befindet sich normalerweise auf einem separaten Computer, um als primärer Namenode zu übernehmen im Falle eines größeren Ausfalls.
Es gibt viele Möglichkeiten, mit dem HDFS-Dateisystem zu interagieren, aber die Befehlszeilenschnittstelle ist vielleicht die einfachste und gebräuchlichste. Hadoop kann auf einem Computer installiert und ausgeführt werden, um einen ersten Eindruck davon zu bekommen. Wir werden das in späteren Artikeln behandeln, also bleiben Sie dran.
Dateisystemoperationen
Die HDFS-Dateisystemoperationen sind den normalen Dateisystemoperationen ziemlich ähnlich. Hier sind einige Auflistungen, nur um eine Vorstellung zu geben.
Kopiert Dateien vom lokalen Dateisystem nach HDFS:
% hadoop fs -copyFromLocal docs/sales.txt hdfs://localhost/ user/mano/sales.txt
Erstellt ein Verzeichnis in HDFS:
% hadoop fs -mkdir students
Listet Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis in HDFS auf:
% hadoop fs -ls .
Schlussfolgerung
HDFS ist eine Implementierung dessen, was ein durch Hadoops Abstraktion dargestelltes Dateisystem tut. Hadoop ist in Java geschrieben; Daher werden alle Dateisysteminteraktionen über die Java-API vermittelt. Die Befehlszeilenschnittstelle ist eine Shell, die für allgemeine Interaktionen bereitgestellt wird. Das Studium von HDFS eröffnet einen anderen Horizont für den Sektor der verteilten Architektur und ihrer komplizierten Arbeitsabläufe. Es wird viel Arbeit geleistet, um dieses Computermodell zu perfektionieren, dessen Anstoß in den letzten Jahren zweifellos Big Data war.
Referenz
HDFS-Architekturdokumentation