Startseite
Themen
HDFS
Aktualisiert: 14. Juni 2024
Mitwirkender: Jim Holdsworth
Hadoop Distributed File System (HDFS) ist ein Dateisystem, das große Datenmengen verwaltet, die auf handelsüblicher Hardware ausgeführt werden können. HDFS ist das beliebteste Datenspeichersystem für Hadoop und kann verwendet werden, um einen einzelnen Apache Hadoop-Cluster auf Hunderte oder sogar Tausende von Knoten zu skalieren. Da HDFS Big Data mit hohem Durchsatz effizient verwaltet, kann es als Datenpipeline verwendet werden und eignet sich ideal zur Unterstützung komplexer Datenanalysen.
HDFS basiert auf einem Open-Source-Framework und ist neben MapReduce und YARN einer der Hauptkomponente von Apache Hadoop. HDFS sollte nicht mit Apache HBase verwechselt oder durch dieses ersetzt werden. HBase ist ein spaltenorientiertes, nicht-relationales Datenbankmanagementsystem, das auf HDFS aufbaut und mit seiner In-Memory-Verarbeitungs-Engine Echtzeit-Datenanforderungen besser unterstützen kann.
Erfahren Sie mehr über die wichtigsten Vorteile generativer KI und wie Unternehmen ihr Geschäft ankurbeln können.
Da eine HDFS-Instanz aus Tausenden von Servern bestehen kann, ist der Ausfall mindestens eines Servers immer möglich. HDFS wurde so konzipiert, dass Fehler erkannt und automatisch schnell behoben werden können. Die Data Replication mit mehreren Kopien über viele Knoten hinweg trägt zum Schutz vor Datenverlust bei. HDFS bewahrt mindestens eine Kopie auf einem anderen Rack als alle anderen Kopien auf. Dieser Datenspeicher in einem großen Cluster über Knoten hinweg erhöht die Zuverlässigkeit. Darüber hinaus kann HDFS Speicher-Snapshots erstellen, um Point-in-Time-Informationen (PIT) zu speichern.
HDFS ist eher für die Stapelverarbeitung als für die interaktive Nutzung gedacht, daher liegt der Schwerpunkt bei der Entwicklung auf hohen Datendurchsatzraten, die den Streaming-Zugriff auf Datensätze ermöglichen.
HDFS eignet sich für Anwendungen, die Datensätze mit einer Größe von typischerweise Gigabyte bis Terabyte verwenden. HDFS bietet eine hohe aggregierte Datenbandbreite und kann auf Hunderte von Knoten in einem einzigen Cluster skaliert werden und dabei helfen, High Performance Computing (HPC)-Systeme zu betreiben. Data Lakes werden oft auf HDFS gespeichert. Data Warehouses haben HDFS ebenfalls verwendet, aber jetzt seltener, da der Betrieb als zu komplex wahrgenommen wird.
Da die Daten virtuell gespeichert werden, können die Kosten für den Datenspeicher von Metadaten und Namespace-Daten des Dateisystems reduziert werden.
Um die Einführung zu erleichtern, ist HDFS so konzipiert, dass es auf mehreren Hardwareplattformen eingesetzt werden kann und mit verschiedenen zugrunde liegenden Betriebssystemen kompatibel ist, darunter Linux, macOS und Windows. Darüber hinaus können Hadoop Data Lakes unstrukturierte, halbstrukturierte und strukturierte Datenbanken unterstützen, um maximale Flexibilität zu gewährleisten. Hadoop ist zwar in Java programmiert, aber auch andere Sprachen (darunter C++, Perl, Python und Ruby) ermöglichen die Nutzung in der Data Science.
HDFS verwendet eine Cluster-Architektur, um einen hohen Durchsatz zu erzielen. Um den Netzwerkverkehr zu reduzieren, speichert das Hadoop-Dateisystem Daten in DataNodes, in denen Berechnungen stattfinden, anstatt die Daten zur Berechnung an einen anderen Ort zu verschieben.
Mit seinen horizontalen und vertikalen Skalierbarkeitsfunktionen kann HDFS schnell an die Datenanforderungen eines Unternehmens angepasst werden. Ein Cluster kann Hunderte oder Tausende von Knoten umfassen.
HDFS verfügt über eine Director/Worker-Architektur.
Sowohl NameNode als auch DataNode sind Software, die für den Einsatz auf einer Vielzahl von Betriebssystemen (OS) geschrieben wurde, wobei es sich häufig um das Betriebssystem GNU/Linux handelt. HDFS wurde in der Programmiersprache Java entwickelt, d. h. jede Maschine, die Java unterstützt, kann auch die NameNode- oder DataNode-Software verwenden.
Bei der Bereitstellung wird oft eine einzelne dedizierte Maschine verwendet, auf der die NameNode-Software ausgeführt wird. Auf allen anderen Maschinen im Cluster wird dann eine einzelne Instanz der DataNode-Software ausgeführt. Bei Bedarf, aber nur selten, ist eine Konfiguration von mehr als einem DataNode auf einem einzelnen Computer möglich.
Wenn Daten in HDFS übertragen werden, werden sie in Blöcke unterteilt und an verschiedene Knoten in einem Cluster verteilt. Da die Daten in mehreren DataNodes gespeichert sind, können die Blöcke auf andere Knoten repliziert werden, um eine parallele Verarbeitung zu ermöglichen. Das verteilte Dateisystem (DFS) enthält Befehle für den schnellen Zugriff auf Daten sowie für das Abrufen, Verschieben und Anzeigen von Daten. Bei Replikaten von Datenblöcken über mehrere DataNodes hinweg kann eine Kopie entfernt werden, ohne dass die Gefahr besteht, dass die anderen Kopien beschädigt werden. Die Standard-HDFS-Blockgröße beträgt 128 MB (Hadoop 2.x), was für manche groß erscheinen mag. Die Blockgröße dient allerdings dazu, die Suchzeiten zu minimieren und die erforderlichen Metadaten zu reduzieren.
Um das Risiko zu minimieren und die Verarbeitung zu beschleunigen, wird ein DataNode aus dem Cluster entfernt und der Betrieb ohne diesen DataNode fortgesetzt, wenn ein DataNode keine Signale mehr an den NameNode sendet. Wenn dieser DataNode später in Betrieb genommen wird, wird er einem neuen Cluster zugewiesen.
HDFS bietet flexible Datenzugriffsdateien über verschiedene Schnittstellen: HDFS wird mit einer nativen Java-API geliefert, während für die Java-API ein Wrapper in der Programmiersprache C verfügbar ist. Außerdem kann ein HTTP-Browser zum Durchsuchen der Dateien einer HDFS-Instanz verwendet werden.
HDFS ist mit einer traditionellen Dateihierarchie organisiert, in der der Benutzer Verzeichnisse erstellen kann, die mehrere Dateien enthalten. Die Hierarchie des Dateisystem-Namensraums ähnelt der herkömmlicher Dateisysteme, bei denen der Benutzer Dateien erstellt und entfernt, sie zwischen Verzeichnissen verschiebt und Dateien umbenennen kann.
Der Dateisystem-Namespace wird vom NameNode verwaltet, der Aufzeichnungen über alle Änderungen im Dateisystem-Namensraum führt. Hier kann die Gesamtzahl der für eine Anwendung zu speichernden Replikate angegeben werden. Diese Zahl ist der Replikationsfaktor für diese Datei. Der Replikationsfaktor kann bei der Erstellung der Datei festgelegt und später bei Bedarf geändert werden.
Um eine zuverlässige Speicherung zu gewährleisten, speichert HDFS große Dateien an mehreren Speicherorten in einem großen Cluster, wobei jede Datei in einer Folge von Blöcken gespeichert wird. Jeder Block wird in einer Datei derselben Größe gespeichert, mit Ausnahme des letzten Blocks, der sich mit dem Hinzufügen von Daten füllt.
Für zusätzlichen Schutz können HDFS-Dateien nur von einem einzigen Autor zu einem beliebigen Zeitpunkt einmal beschrieben werden. Um sicherzustellen, dass alle Daten wie angewiesen repliziert werden. Der NameNode erhält einen Herzschlag (einen regelmäßigen Statusbericht) und einen Blockreport (die Block-ID, den Generierungsstempel und die Länge jedes Blockreplikats) von jedem an den Cluster angeschlossenen DataNode. Der Empfang eines Herzschlages zeigt an, dass der DataNode ordnungsgemäß funktioniert.
Der NameNode wählt die Rack-ID für jeden DataNode mithilfe eines Prozesses namens Hadoop Rack Awareness aus, um Datenverluste zu verhindern, falls ein ganzes Rack ausfällt. Dies ermöglicht auch die Nutzung der Bandbreite mehrerer Racks beim Lesen von Daten.
Stellen Sie sich eine Datei vor, die Telefonnummern für ein ganzes Land enthält. Die Nummern für Personen, deren Nachname mit A beginnt, könnten auf Server 1 gespeichert sein, B auf Server 2 und so weiter. Mit Hadoop würden Teile dieses Telefonbuchs in einem einzigen Cluster gespeichert werden, und um das gesamte Telefonbuch zu rekonstruieren, würde eine Anwendung die Blöcke von jedem Server im Cluster benötigen.
Um eine hohe Verfügbarkeit zu gewährleisten, falls ein Server ausfällt, repliziert HDFS diese kleineren Teile standardmäßig auf zwei weitere Server. (Diese Redundanz kann auf Dateibasis oder für eine gesamte Umgebung erhöht oder verringert werden. Zum Beispiel benötigt ein Entwicklungs-Hadoop-Cluster in der Regel keine Datenredundanz.)
Diese Redundanz ermöglicht es dem Hadoop-Cluster auch, die Arbeit in kleinere Einheiten aufzuteilen und diese Aufgaben auf allen Servern im Cluster auszuführen, um eine bessere Skalierbarkeit zu erreichen. Schließlich profitiert ein Unternehmen von dem Standort oder Daten, der bei der Arbeit mit großen Datensätzen von entscheidend ist.
HDFS kann durch effektive Skalierung auch künstliche Intelligenz (KI) und maschinelles Lernen (ML) ermöglichen. Zunächst müssen Daten in ausreichender Menge gespeichert werden, um ML-Modelle zu trainieren. Anschließend muss auf diese riesigen Datensätze zugegriffen werden.
Jedes Unternehmen, das große Datensätze – bis zu Petabyte – erfasst, speichert und nutzt, könnte die Verwendung von HDFS in Betracht ziehen. Einige branchenspezifische Anwendungsfälle zeigen, wie HDFS implementiert werden könnte.
Der Ursprung von Hadoop war laut den Mitbegründern Mike Cafarella und Doug Cutting ein 2003 veröffentlichtes Google File System-Papier. Es folgte ein zweites Papier mit dem Titel „MapReduce: Simplified Data Processing on Large Clusters.“ Die Entwicklung einer frühen Suchmaschine namens Apache Nutch wurde begonnen, aber dann wechselte die Arbeit mit Doug Cutting 2006 zu Yahoo.
Hadoop wurde nach einem Spielzeugelefanten benannt, der Cutting's Sohn gehörte. (Daher das Logo.) Der ursprüngliche Hadoop-Code basierte größtenteils auf Nutch, überwand jedoch dessen Skalierbarkeitsbeschränkungen und enthielt sowohl die frühen Versionen von HDFS als auch MapReduce.
Die Programmbibliothek im Hadoop-Ökosystem wächst weiter. Zusätzlich zu HDFS gibt es auch:HBase (eine NoSQL-Datenbank), Mahout, Spark MLLib (Algorithmus-Bibliotheken für maschinelles Lernen), MapReduce (programmgestützte Datenverarbeitung), Oozie (Jobplaner ), PIG und HIVE (abfragebasierte Datenverarbeitungsdienste), Solar und Lucene (für die Suche und Indexierung),Spark (Datenverarbeitung im Arbeitsspeicher), YARN (Yet Another Resource Negotiator) und Zookeeper (Clusterkoordination).
Die Open-Source-Software innerhalb des Hadoop-Ökosystems wird nun von der Apache Software Foundation1 verwaltet – einer weltweiten Gemeinschaft für Softwareentwickler und Software-Mitwirkende.
watsonx.data ist jetzt verfügbar – ein zweckmäßiger Datenspeicher auf der Grundlage einer offenen Data Lakehouse-Architektur zur standortunabhängigen Skalierung von KI-Workloads für alle Ihre Daten.
IBM und Cloudera haben sich zusammengetan, um eine branchenführende Hadoop-Distribution für Unternehmen anzubieten, die ein integriertes Ökosystem aus Produkten und Dienstleistungen umfasst, um schnellere Analysen im großen Maßstab zu unterstützen.
Es entstehen mindestens drei verschiedene Datenplattformlösungen. Erfahren Sie mehr über die Beziehung zwischen Data Lakehouse, Data Fabric und Data Mesh.
Lesen Sie diese praktische Einführung in die nächste Generation von Datenarchitekturen. Es wird die Rolle der Cloud und der NoSQL-Technologien vorgestellt und die praktischen Aspekte von Sicherheit, Datenschutz und Governance erörtert.
Presto bietet Unternehmen jeder Größe eine schnelle und effiziente Möglichkeit zur Analyse von Big Data aus verschiedenen Quellen, einschließlich lokaler Systeme und der Cloud.
1 Apache Software Foundation (Link befindet sich außerhalb von ibm.com)