Hadoop Distributed File System (HDFS)
HDFS
HDFS (Hadoop Distributed File System) ist das primäre Speichersystem, das von Hadoop-Anwendungen verwendet wird. Dieses Open-Source-Framework zeichnet sich durch schnelle Übertragungen von Daten zwischen Knoten aus. Es wird häufig von Unternehmen verwendet, die Big Data verarbeiten und speichern müssen. HDFS ist eine Schlüsselkomponente vieler Hadoop-Systeme, da es ein Mittel zur Verwaltung von Big Data sowie zur Unterstützung von Big Data Analytics bietet.
Es gibt viele Unternehmen auf der ganzen Welt, die HDFS verwenden. Was genau ist HDFS und warum wird es benötigt? Nachfolgend erklären wir ausführlich, was HDFS ist und warum es für Unternehmen nützlich sein kann.
Was ist HDFS?
HDFS steht für Hadoop Distributed File System (HDFS). HDFS fungiert als verteiltes Dateisystem, das für die Ausführung auf Standardhardware konzipiert ist.
HDFS ist fehlertolerant und für die Bereitstellung auf kostengünstiger Standardhardware konzipiert. HDFS bietet einen hohen Durchsatz und einen kontextsensitiven Datenzugriff auf Anwendungsdaten, eignet sich für Anwendungen mit großen Datasets und ermöglicht den Streaming-Zugriff auf Dateisystemdaten in Apache Hadoop.
Was ist nun Hadoop? Und wie unterscheidet es sich von HDFS? Ein wesentlicher Unterschied zwischen Hadoop und HDFS besteht darin, dass Hadoop das Open-Source-Framework ist, das Daten speichern, verarbeiten und analysieren kann, während HDFS das Dateisystem von Hadoop ist, das den Zugriff auf Daten ermöglicht. Dies bedeutet im Wesentlichen, dass HDFS ein Modul von Hadoop ist.
So sieht die HDFS-Architektur aus:
Wie die Abbildung schon erkennen lässt, liegt der Schwerpunkt auf NameNodes und DataNodes. Der NameNode ist die Hardware, die das GNU/Linux-Betriebssystem und die Software enthält. Das verteilte Hadoop-Dateisystem fungiert als Masterserver und kann die Dateien sowie den Zugriff eines Clients auf Dateien verwalten. Außerdem steuert es Dateibetriebsprozesse wie das Umbenennen, Öffnen und Schließen von Dateien.
Ein DataNode ist Hardware mit dem GNU/Linux-Betriebssystem und der DataNode-Software. Für jeden Knoten in einem HDFS-Cluster gibt es einen DataNode. Diese Knoten helfen bei der Steuerung der Datenspeicherung ihres Systems, da sie auf Anfrage des Clients einen Vorgang auf den Dateisystemen durchführen und auf Anweisung des NameNode auch Dateien erstellen, replizieren und blockieren können.
Der Sinn und Zweck von HDFS besteht darin, die folgenden Ziele zu erreichen:
- Große Datasets verwalten: Das Organisieren und Speichern von Datasets kann eine schwierige Angelegenheit sein. HDFS wird zur Verwaltung von Anwendungen verwendet, die große Datasets verarbeiten müssen. Um dies zu erreichen, sollte HDFS Hunderte von Knoten pro Cluster haben.
- Fehler erkennen: HDFS sollte über Technologie zum schnellen und effektiven Scannen und Erkennen von Fehlern verfügen, da es eine große Anzahl von Standardhardwarekomponenten umfasst. Der Ausfall von Komponenten ist ein häufig auftretendes Problem.
- Hardware-Effizienz: Wenn große Datasets beteiligt sind, kann dies den Netzwerktraffic reduzieren und die Verarbeitungsgeschwindigkeit erhöhen.
Die Geschichte von HDFS
Was sind die Ursprünge von Hadoop? Das Design von HDFS basierte auf dem Google File System. Es wurde ursprünglich als Infrastruktur für das Websuchmaschinenprojekt Apache Nutch entwickelt, ist aber inzwischen Teil des Hadoop-Ökosystems.
In den frühen Jahren des Internets tauchten erstmals Webcrawler auf, mit denen Menschen auf Webseiten nach Informationen suchen konnten. Darauf aufbauend entstanden verschiedene Suchmaschinen wie Yahoo und Google.
Außerdem entstand eine weitere Suchmaschine namens Nutch, die Daten und Berechnungen gleichzeitig auf mehrere Computer verteilen wollte. Nutch ging dann an Yahoo und wurde zweigeteilt. Apache Spark und Hadoop sind jetzt eigenständige Entitäten. Während Hadoop für die Batch-Verarbeitung konzipiert ist, ist Spark für die effiziente Verarbeitung von Echtzeitdaten ausgelegt.
Heutzutage werden die Struktur und das Framework von Hadoop von der Apache Software Foundation verwaltet, einer globalen Community von Softwareentwicklern und Mitwirkenden.
HDFS ist daraus entstanden und soll Hardwarespeicherlösungen durch eine bessere, effizientere Methode ersetzen – und zwar durch ein virtuelles Ablagesystem. Als MapReduce zum ersten Mal auf den Markt kam, war es die einzige verteilte Verarbeitungs-Engine, die HDFS verwenden konnte. In jüngerer Zeit nutzen auch alternative Komponenten von Hadoop-Datendiensten wie HBase und Solr HDFS zum Speichern von Daten.
Was hängen HDFS und Big Data zusammen?
Was ist also Big Data und welche Rolle spielt HDFS dabei? Der Begriff „Big Data“ bezieht sich auf alle Daten, die schwer zu speichern, zu verarbeiten und zu analysieren sind. Bei HDFS handelt es sich bei Big Data um Daten, die im HDFS-Ablagesystem organisiert sind.
Wie wir jetzt wissen, ist Hadoop ein Framework, das auf Parallelverarbeitung und verteilter Speicherung basiert. Es kann zum Sortieren und Speichern von Big Data verwendet werden, da diese nicht auf herkömmliche Weise gespeichert werden können.
Tatsächlich ist es die am häufigsten verwendete Software zur Verarbeitung von Big Data und wird von Unternehmen wie Netflix, Expedia und British Airways verwendet, die eine positive Einstellung zu Hadoop für die Datenspeicherung haben. HDFS ist bei Big Data von entscheidender Bedeutung, da viele Unternehmen ihre Daten inzwischen auf diese Weise speichern.
Es gibt fünf Kernelemente von Big Data, die von HDFS-Diensten organisiert werden:
- Geschwindigkeit – wie schnell Daten generiert, zusammengestellt und analysiert werden
- Volumen – die Menge der generierten Daten
- Vielfalt – die Art der Daten, diese können strukturiert, unstrukturiert usw. sein
- Richtigkeit – die Qualität und Genauigkeit der Daten
- Wert – wie Sie diese Daten nutzen können, um Erkenntnisse in Ihre Geschäftsprozesse einzubringen
Vorteile des Hadoop Distributed File System (HDFS)
Als Open-Source-Teilprojekt innerhalb von Hadoop bietet HDFS fünf wesentliche Vorteile beim Umgang mit Big Data:
- Fehlertoleranz. HDFS wurde entwickelt, um Fehler zu erkennen und für eine zügige automatische Wiederherstellung zu sorgen. So werden Kontinuität und Zuverlässigkeit gewährleistet.
- Geschwindigkeit. Aufgrund seiner Cluster-Architektur kann es 2 GB Daten pro Sekunde verarbeiten.
- Zugriff auf weitere Datentypen. Hier sind insbesondere Streaming-Daten zu nennen. Aufgrund seines Designs zur Batch-Verarbeitung großer Datenmengen ermöglicht es einen hohen Datendurchsatz, was es ideal für die Unterstützung von Streaming-Daten macht.
- Kompatibilität und Portabilität. HDFS ist so konzipiert, dass es auf eine Vielzahl von Hardware-Setups portierbar ist und mit mehreren zugrunde liegenden Betriebssystemen kompatibel ist. Dies bietet Benutzern letztendlich die Möglichkeit, HDFS mit ihrem eigenen, maßgeschneiderten Setup zu verwenden. Diese Vorteile sind besonders wichtig beim Umgang mit Big Data und wurden durch die besondere Art und Weise ermöglicht, wie HDFS mit Daten umgeht.
Das nachfolgende Diagramm zeigt den Unterschied zwischen einem lokalen Dateisystem und HDFS.
- Skalierbar. Sie können Ressourcen entsprechend der Größe Ihres Dateisystems skalieren. HDFS umfasst vertikale und horizontale Skalierbarkeitsmechanismen.
- Datenlokalität. Beim Hadoop-Dateisystem befinden sich die Daten in Datenknoten, anstatt dass die Daten dorthin verschoben werden, wo sich die Datenverarbeitungseinheit befindet. Durch die Verkürzung der Entfernung zwischen den Daten und dem Verarbeitungsprozess wird die Überlastung des Netzwerks verringert und das System effektiver und effizienter.
- Kostengünstig. Wenn wir an Daten denken, denken wir zunächst vielleicht an teure Hardware und eine ausgelastete Bandbreite. Wenn ein Hardwarefehler auftritt, kann die Behebung sehr kostspielig sein. Mit HDFS werden die Daten kostengünstig gespeichert, da sie virtuell sind, wodurch die Kosten für die Speicherung von Dateisystemmetadaten und Dateisystem-Namespace-Daten drastisch gesenkt werden können. Da HDFS außerdem Open Source ist, müssen sich Unternehmen keine Gedanken über die Zahlung einer Lizenzgebühr machen.
- Speichert große Datenmengen. Bei HDFS geht es um Datenspeicherung – also um Daten aller Arten und Größen – insbesondere aber um große Datenmengen von Unternehmen, die Schwierigkeiten haben, diese Daten zu speichern. Hierzu zählen sowohl strukturierte als auch unstrukturierte Daten.
- Flexibel. Im Gegensatz zu einigen anderen traditionelleren Speicherdatenbanken müssen die erfassten Daten vor dem Speichern nicht verarbeitet werden. Sie können so viele Daten speichern, wie Sie möchten, und haben die Möglichkeit, genau zu entscheiden, was Sie damit machen und wie Sie sie später verwenden möchten. Hierzu zählen auch unstrukturierte Daten wie Texte, Videos und Bilder.
So verwenden Sie HDFS
Wie wird HDFS also verwendet? HDFS funktioniert mit einem Haupt-NameNode und mehreren DataNodes, alle auf einem Standardhardware-Cluster. Diese Knoten sind am selben Ort innerhalb des Rechenzentrums organisiert. Als nächstes werden sie in Blöcke aufgeteilt, die zur Speicherung auf mehrere DataNodes verteilt werden. Um das Risiko eines Datenverlusts zu verringern, werden Blöcke häufig knotenübergreifend repliziert. Es handelt sich um ein Backup-System für den Fall, dass Daten verloren gehen.
Was sind NameNodes? Der NameNode ist der Knoten innerhalb der Clusters der weiß, was die Daten enthalten, zu welchem Block sie gehören, welche Blockgröße sie haben und wohin sie gehen sollen. NameNodes werden auch verwendet, um den Zugriff auf Dateien zu steuern, einschließlich der Frage, wann jemand Daten in den verschiedenen DataNodes schreiben, lesen, erstellen, entfernen und replizieren kann.
Je nach Serverkapazität können die Cluster bei Bedarf auch in Echtzeit angepasst werden – was bei einem Datenmengenanstieg hilfreich sein kann. Knoten können bei Bedarf hinzugefügt oder entfernt werden.
Nun zu DataNodes. DataNodes stehen in ständiger Kommunikation mit den NameNodes, um festzustellen, ob sie einen Task beginnen und abschließen müssen. Dieser Stream konsistenter Zusammenarbeit bedeutet, dass der NameNode den Status jedes DataNodes genau kennt.
Wenn festgestellt wird, dass ein DataNode nicht ordnungsgemäß funktioniert, kann der NameNode diesen Task automatisch einem anderen funktionierenden Knoten im selben Datenblock zuweisen. Ebenso sind DataNodes auch in der Lage, untereinander zu kommunizieren, was bedeutet, dass sie während standardmäßiger Dateivorgänge zusammenarbeiten können. Da NameNodes die DataNodes und deren Performance kennen, sind sie für die Pflege des Systems von entscheidender Bedeutung.
Datenblöcke werden über mehrere DataNodes hinweg repliziert und über den NameNode abgerufen.
Um HDFS verwenden zu können, müssen Sie einen Hadoop-Cluster installieren und einrichten. Dabei kann es sich um die Einrichtung eines einzelnen Knotens handeln, was eher für Erstbenutzer geeignet ist, oder um die Einrichtung eines Clusters für große, verteilte Cluster. Anschließend müssen Sie sich mit den HDFS-Befehlen wie den folgenden vertraut machen, um Ihr System bedienen und verwalten zu können.
Befehl | Beschreibung |
-rm | Entfernt eine Datei oder ein Verzeichnis |
-ls | Listet Dateien mit Berechtigungen und anderen Details auf |
-mkdir | Erstellt ein Verzeichnis mit dem Namen „path“ in HDFS |
-cat | Zeigt den Inhalt der Datei an |
-rmdir | Löscht ein Verzeichnis |
-put | Lädt eine Datei oder einen Ordner von einem lokalen Datenträger auf HDFS hoch |
-rmr | Löscht die durch Pfad oder Ordner und Unterordner identifizierte Datei |
-get | Verschiebt eine Datei oder einen Ordner von HDFS in eine lokale Datei |
-count | Zählt die Anzahl der Dateien und Verzeichnisse und gibt die Dateigröße an |
-df | Zeigt freien Speicherplatz an |
-getmerge | Führt mehrere Dateien in HDFS zusammen |
-chmod | Ändert Dateiberechtigungen |
-copyToLocal | Kopiert Dateien auf das lokale System |
-Stat | Druckt Statistiken über die Datei oder das Verzeichnis |
-head | Zeigt das erste Kilobyte einer Datei an |
-usage | Gibt die Hilfe für einen einzelnen Befehl zurück |
-chown | Weist die Datei einem neuen Eigentümer und einer neuen Gruppe zu |
Wie funktioniert HDFS?
Wie bereits erwähnt, verwendet HDFS NameNodes und DataNodes. HDFS ermöglicht die schnelle Übertragung von Daten zwischen Datenverarbeitungsknoten. Wenn HDFS Daten aufnimmt, ist es in der Lage, die Information in Blöcke aufzuteilen und sie an verschiedene Knoten in einem Cluster zu verteilen.
Daten werden in Blöcke aufgeteilt und zur Speicherung auf die DataNodes verteilt. Diese Blöcke können auch über Knoten hinweg repliziert werden, was eine effiziente Parallelverarbeitung ermöglicht. Über verschiedene Befehle können Sie auf Daten zugreifen, sie verschieben und anzeigen. Mit HDFS-DFS-Optionen wie „-get“ und „-put“ können Sie Daten nach Bedarf abrufen und verschieben.
Darüber hinaus ist das HDFS auf höchste Alarmbereitschaft ausgelegt und kann Fehler schnell erkennen. Das Dateisystem nutzt die Datenreplikation, um sicherzustellen, dass jedes Datenelement mehrfach gespeichert wird, und weist es dann einzelnen Knoten zu. Dabei wird sichergestellt, dass sich mindestens eine Kopie auf einem anderen Rack befindet als die anderen Kopien.
Das heißt, wenn ein DataNode keine Signale mehr an den NameNode sendet, entfernt er den DataNode aus dem Cluster und arbeitet ohne ihn. Wird dieser DataNode dann wieder aktiv, kann er einem neuen Cluster zugeordnet werden. Da die Datenblöcke außerdem über mehrere DataNodes repliziert werden, führt das Entfernen eines davon in keiner Weise zu Dateibeschädigungen.
HDFS-Komponenten
Es ist wichtig zu wissen, dass es drei Hauptkomponenten von Hadoop gibt. Hadoop HDFS, Hadoop MapReduce und Hadoop YARN. Die Funktion der einzelnen Komponenten innerhalb von Hadoop ist:
- Hadoop HDFS: Hadoop Distributed File System (HDFS) ist die Speichereinheit von Hadoop.
- Hadoop MapReduce: Hadoop MapReduce ist die Verarbeitungseinheit von Hadoop. Dieses Software-Framework wird zum Schreiben von Anwendungen zur Verarbeitung großer Datenmengen verwendet.
- Hadoop YARN: Hadoop YARN ist die Ressourcenverwaltungseinheit von Hadoop. Sie verarbeitet Daten und führt sie für Batch-, Stream-, interaktive und Graph-Verarbeitungen aus, die alle in HDFS gespeichert sind.
So erstellen Sie ein HDFS-Dateisystem
Möchten Sie wissen, wie man ein HDFS-Dateisystem erstellt? Anhand der nachstehenden Schritte können Sie das System erstellen, bearbeiten und bei Bedarf entfernen.
Ihr HDFS auflisten
Ihre HDFS-Auflistung sollte /user/IhrBenutzername lauten. Geben Sie Folgendes ein, um den Inhalt Ihres HDFS-Startverzeichnisses anzuzeigen:
hdfs dfs -ls
Da Sie gerade erst anfangen, können Sie zu diesem Zeitpunkt noch nichts sehen. Wenn Sie den Inhalt eines nicht leeren Verzeichnisses anzeigen möchten, geben Sie Folgendes ein:
hdfs dfs -ls /user
Anschließend können Sie die Namen der Startverzeichnisse aller anderen Hadoop-Benutzer sehen.
Verzeichnis in HDFS erstellen
Sie können jetzt ein Testverzeichnis erstellen, hier als testHDFS benannt. Es wird in Ihrem HDFS angezeigt. Geben Sie einfach Folgendes ein:
hdfs dfs -mkdir testHDFS
Jetzt müssen Sie überprüfen, ob das Verzeichnis vorhanden ist, indem Sie den Befehl verwenden, den Sie beim Auflisten Ihres HDFS eingegeben haben. Das testHDFS-Verzeichnis sollte nun aufgelistet sein.
Überprüfen Sie es erneut mit dem vollständigen HDFS-Pfadnamen zu Ihrem HDFS. Geben Sie Folgendes ein:
hdfs dfs -ls /user/yourUserName
Überprüfen Sie noch einmal, ob dies funktioniert, bevor Sie mit den nächsten Schritte fortfahren.
Datei kopieren
Um eine Datei von Ihrem lokalen Dateisystem in HDFS zu kopieren, erstellen Sie zunächst eine Datei, die Sie kopieren möchten. Geben Sie dazu Folgendes ein:
echo "HDFS test file" >> testFile
Dadurch wird eine neue Datei mit dem Namen testFile erstellt, die die Zeichen „HDFS test file“ enthält. Um dies zu überprüfen, geben Sie Folgendes ein:
ls
Geben Sie dann Folgendes ein, um zu überprüfen, ob die Datei erstellt wurde:
cat testFile
Anschließend müssen Sie die Datei in HDFS kopieren. Um Dateien von Linux in HDFS zu kopieren, müssen Sie Folgendes verwenden:
hdfs dfs -copyFromLocal testFile
Beachten Sie, dass Sie den Befehl „-copyFromLocal“ verwenden müssen, da der Befehl „-cp“ zum Kopieren von Dateien innerhalb von HDFS verwendet wird.
Jetzt müssen Sie nur noch prüfen, ob die Datei korrekt kopiert wurde. Geben Sie dazu Folgendes ein:
code>hdfs dfs -ls
hdfs dfs -cat testFile
Dateien verschieben und kopieren
Beim Kopieren der Testdatei wurde diese im Basisstartverzeichnis abgelegt. Jetzt können Sie sie in das bereits erstellte testHDFS-Verzeichnis verschieben. Verwenden Sie dazu Folgendes:
hdfs dfs -mv testFile testHDFS
hdfs dfs -ls
hdfs dfs -ls testHDFS/
Im ersten Teil wurde Ihre Testdatei aus dem HDFS-Startverzeichnis in das von Ihnen erstellte Testverzeichnis verschoben. Der zweite Teil dieses Befehls zeigt uns dann, dass er sich nicht mehr im HDFS-Startverzeichnis befindet, und der dritte Teil bestätigt, dass sie in das testHDFS-Verzeichnis verschoben wurde.
Um eine Datei zu kopieren, geben Sie Folgendes ein:
hdfs dfs -cp testHDFS/testFile testHDFS/testFile2
hdfs dfs -ls testHDFS/
Datenträgerbelegung überprüfen
Das Überprüfen des Datenträgerspeicherplatzes ist nützlich, wenn Sie HDFS verwenden. Dazu können Sie folgenden Befehl eingeben:
hdfs dfs -du
Dadurch können Sie dann sehen, wie viel Speicherplatz Sie in Ihrem HDFS verwenden. Sie können auch anzeigen, wie viel Speicherplatz in HDFS in den Clustern verfügbar ist, indem Sie Folgendes eingeben:
hdfs dfs -df
Datei/Verzeichnis entfernen
Es kann vorkommen, dass Sie eine Datei oder ein Verzeichnis im HDFS löschen müssen. Dies kann mit folgendem Befehl erreicht werden:
hdfs dfs -rm testHDFS/testFile
hdfs dfs -ls testHDFS/
Sie werden sehen, dass das von Ihnen erstellte testHDFS-Verzeichnis und testFile2 noch vorhanden sind. Entfernen Sie das Verzeichnis, indem Sie Folgendes eingeben:
hdfs dfs -rmdir testhdfs
Es erscheint dann eine Fehlermeldung – aber keine Panik. Sie lautet etwa „rmdir: testhdfs: Verzeichnis ist nicht leer“. Das Verzeichnis muss leer sein, bevor es gelöscht werden kann. Mit dem Befehl „rm“ können Sie dies umgehen und ein Verzeichnis inklusive aller darin enthaltenen Dateien entfernen. Geben Sie Folgendes ein:
hdfs dfs -rm -r testHDFS
hdfs dfs -ls
So installieren Sie HDFS
Um Hadoop zu installieren, müssen Sie bedenken, dass es einen Single-Node und einen Multi-Node gibt. Je nachdem, was Sie benötigen, können Sie entweder einen Single-Node- oder Multi-Node-Cluster verwenden.
Ein Single-Node-Cluster bedeutet, dass nur ein DataNode ausgeführt wird. Er umfasst den NameNode, den DataNode, den Ressourcenmanager und den Knotenmanager auf einem Computer.
Für einige Anwendungsfälle ist dies alles, was benötigt wird. Wenn Sie beispielsweise im medizinischen Bereich Studien durchführen und Daten in einer Reihenfolge erfassen, sortieren und verarbeiten müssen, können Sie einen Singlen-Node-Cluster verwenden. Dadurch können die Daten problemlos in kleinerem Umfang verarbeitet werden, im Vergleich zu Daten, die über viele Hunderte von Maschinen verteilt sind. Um einen Single-Node-Cluster zu installieren, gehen Sie folgendermaßen vor:
- Laden Sie das Java-8-Paket herunter. Speichern Sie diese Datei in Ihrem Startverzeichnis.
- Extrahieren Sie die Java-Tar-Datei.
- Laden Sie das Hadoop-2.7.3-Paket herunter.
- Extrahieren Sie die Hadoop-Tar-Datei.
- Fügen Sie die Hadoop- und Java-Pfade in der Bash-Datei (.bashrc) hinzu.
- Bearbeiten Sie die Hadoop-Konfigurationsdateien.
- Öffnen Sie core-site.xml und bearbeiten Sie die Eigenschaft.
- Öffnen Sie hdfs-site.xml und bearbeiten Sie die Eigenschaft.
- Öffnen Sie mapred-site.xml und bearbeiten Sie die Eigenschaft.
- Öffnen Sie yarn-site.xml und bearbeiten Sie die Eigenschaft.
- Öffnen Sie hadoop-env.sh und fügen Sie den Java-Pfad hinzu.
- Gehen Sie zum Hadoop-Startverzeichnis und formatieren Sie den NameNode.
- Gehen Sie zum Verzeichnis hadoop-2.7.3/sbin und starten Sie alle Daemons.
- Überprüfen Sie, ob alle Hadoop-Dienste ausgeführt werden.
Fertig! Sie sollten HDFS nun erfolgreich installiert haben.
So greifen Sie auf HDFS-Dateien zu
Angesichts der Tatsache, dass es sich um Daten handelt, ist es keine Überraschung, dass die Sicherheitsmaßnahmen bei HDFS streng sind. Da es sich bei HDFS technisch gesehen um virtuellen Speicher handelt, erstreckt er sich über die Cluster, sodass Sie nur die Metadaten in Ihrem Dateisystem sehen können, nicht jedoch die tatsächlichen spezifischen Daten.
Um auf HDFS-Dateien zuzugreifen, können Sie die „jar“-Datei von HDFS in Ihr lokales Dateisystem herunterladen. Sie können auch über die Webbenutzeroberfläche auf HDFS zugreifen. Öffnen Sie einfach Ihren Browser und geben Sie „localhost:50070“ in die Suchleiste ein. Von dort aus können Sie die Webbenutzeroberfläche von HDFS sehen und zur Registerkarte „Utilities“ (Dienstprogramme) auf der rechten Seite wechseln. Klicken Sie dann auf „Browse file system“ (Dateisystem durchsuchen). Daraufhin wird eine vollständige Liste der Dateien angezeigt, die sich auf Ihrem HDFS befinden.
HDFS-DFS-Beispiele
Hier sind einige der häufigsten Beispiele für Hadoop-Befehle.
Beispiel A
Um ein Verzeichnis zu löschen, müssen Sie einen der folgenden Befehle verwenden (Hinweis: Dies ist nur möglich, wenn die Dateien leer sind):
$Hadoop fs -rmdir /directory-name
oder
$hdfs dfs -rmdir /directory-name
Beispiel B
Wenn Sie mehrere Dateien in einem HDFS haben, können Sie den Befehl „-getmerge“ verwenden. Dadurch werden mehrere Dateien zu einer einzigen Datei zusammengeführt, die Sie dann in Ihr lokales Dateisystem herunterladen können. Verwenden Sie dazu folgenden Befehl:
$ Hadoop fs -getmerge [-nl] /source /local-destination
oder
$ hdfs dfs -getmerge [-nl] /source /local-destination
Beispiel C
Wenn Sie eine Datei von HDFS in Ihr lokales System hochladen möchten, können Sie den Befehl „-put“ verwenden. Geben Sie an, woher Sie kopieren möchten und welche Datei Sie auf HDFS kopieren möchten. Verwenden Sie Folgendes:
$ Hadoop fs -put /local-file-path /hdfs-file-path
oder
$ hdfs dfs -put /local-file-path /hdfs-file-path
Beispiel D
Der Befehl „-count“ wird verwendet, um die Anzahl der Verzeichnisse, Dateien und die Dateigröße auf HDFS zu verfolgen. Sie können Folgendes verwenden:
$ Hadoop fs -count /hdfs-file-path
oder
$ hdfs dfs -count /hdfs-file-path
Beispiel E
Mit dem Befehl „-chown“ können Sie den Eigentümer und die Gruppe einer Datei ändern. Verwenden Sie dazu Folgendes:
$ Hadoop fs -chown [-R] [owner][:[group]] hdfs-file-path
oder
$ hdfs dfs -chown [-R] [owner][:[group]] hdfs-file-path
Was ist HDFS-Speicher?
Wie wir jetzt wissen, werden HDFS-Daten in sogenannten Blöcken gespeichert. Diese Blöcke sind die kleinste Dateneinheit, die das Dateisystem speichern kann. Dateien werden verarbeitet und in diese Blöcke aufgeteilt, die dann übernommen und über die Cluster verteilt und aus Sicherheitsgründen auch repliziert werden. Normalerweise kann jeder Block dreimal repliziert werden. Dieses Diagramm zeigt umfangreiche Datenbestände und wie diese mit HDFS gespeichert werden können.
Das erste Replikat finden Sie auf dem DataNode, das zweite wird auf einem separaten DataNode innerhalb der Clusters gespeichert und das dritte wird auf einem DataNode in einem anderen Cluster gespeichert. Dies bedeutet dreifachen Schutz als Sicherheitsmaßnahme. Sollte also das Schlimmste passieren und ein Replikat ausfallen, sind die Daten nicht endgültig verloren.
Der NameNode speichert wichtige Informationen, z. B. die Anzahl der Blöcke und den Speicherort der Replikate. Im Vergleich dazu speichert ein DataNode die tatsächlichen Daten und kann auf Befehl Blöcke erstellen, entfernen und replizieren. Das sieht wie folgt aus:
In hdfs-site.xml
dfs.NameNode.name.dirfile:/Hadoop/hdfs/NameNode
dfs.DataNode.data.dir
file:/Hadoop/hdfs/DataNode
Dfs.DataNode.data.dir
Dies bestimmt, wo DataNodes ihre Blöcke speichern sollen.
Wie speichert HDFS Daten?
Das HDFS-Dateisystem besteht aus einer Reihe von Master-Diensten (NameNode, sekundärer NameNode und DataNodes). Der NameNode und der sekundäre NameNode verwalten die HDFS-Metadaten. Die DataNodes hosten die zugrunde liegenden HDFS-Daten.
Der NameNode verfolgt, welche DataNodes den Inhalt einer bestimmten Datei in HDFS enthalten. HDFS unterteilt Dateien in Blöcke und speichert jeden Block in einem DataNode. Mehrere DataNodes sind mit den Cluster verknüpft. Der NameNode verteilt dann Replikate dieser Datenblöcke über die Cluster. Außerdem weist er den Benutzer oder die Anwendung darauf hin, wo die gewünschten Information zu finden sind.
Wofür ist das Hadoop Distributed File System (HDFS) ausgelegt?
Die einfache Antwort auf die Frage „Wofür ist das Hadoop Distributed File System (HDFS) ausgelegt?“ lautet: In erster Linie auf Big Data. Dies kann für große Unternehmen von unschätzbarem Wert sein, die andernfalls Schwierigkeiten hätten, die Daten ihres Unternehmens und ihrer Kunden zu verwalten und zu speichern.
Mit Hadoop können Sie Daten speichern und vereinen, egal ob es sich um Transaktions-, Wissenschafts-, Social-Media-, Werbe- oder Maschinendaten handelt. Es bedeutet auch, dass Sie auf diese Daten zurückgreifen und wertvolle Erkenntnisse über die Business Performance und Analytics gewinnen können.
Da HDFS zum Speichern von Daten konzipiert wurde, kann es auch Rohdaten verarbeiten, die häufig von Wissenschaftlern oder Medizinern verwendet werden, die solche Daten analysieren möchten. Diese werden Data Lakes genannt. Sie ermöglichen es Wissenschaftlern oder Medizinern, schwierigere Fragen ohne Einschränkungen anzugehen.
Da Hadoop in erster Linie für die Verarbeitung umfangreicher Datenmengen auf verschiedene Weise konzipiert wurde, kann es auch zur Ausführung von Algorithmen für Analysezwecke verwendet werden. Dies bedeutet, dass es Unternehmen hilft, Daten effizienter zu verarbeiten und zu analysieren und so neue Trends und Anomalien zu entdecken. Bestimmte Datasets werden sogar aus Data Warehouses entfernt und in Hadoop verschoben. Diese Vorgehensweise macht es einfacher, alle Daten an einem leicht zugänglichen Ort aufzubewahren.
Wenn es um Transaktionsdaten geht, ist Hadoop auch für die Verarbeitung von Millionen von Transaktionen gerüstet. Dank seiner Speicher- und Verarbeitungsfähigkeiten kann es zur Speicherung und Analyse von Kundendaten verwendet werden. Sie können auch tief in die Daten eintauchen, um neue Trends und Muster zu entdecken, die Ihnen bei der Erreichung Ihrer Geschäftsziele helfen. Vergessen Sie nicht, dass Hadoop ständig mit neuen Daten aktualisiert wird und Sie neue und alte Daten vergleichen können, um zu sehen, was sich geändert hat und warum.
Überlegungen zu HDFS
HDFS ist standardmäßig mit 3-facher Replikation konfiguriert, was bedeutet, dass Datasets über zwei zusätzliche Kopien verfügen. Dies erhöht zwar die Wahrscheinlichkeit lokalisierter Daten während der Verarbeitung, verursacht jedoch zusätzliche Speicherkosten.
- HDFS funktioniert am besten, wenn es mit lokal angeschlossenem Speicher konfiguriert wird. Dies gewährleistet die beste Performance für das Dateisystem.
- Um die Kapazität von HDFS zu erhöhen, müssen neue Server (Datenverarbeitung, Speicherung, Datenträger) und nicht nur Speichermedien hinzugefügt werden.
HDFS vs. Cloud-Objektspeicher
Wie oben erwähnt, ist die HDFS-Kapazität eng mit den Datenverarbeitungsressourcen verknüpft. Eine Erhöhung der Speicherkapazität führt zu einer Erhöhung der CPU-Ressourcen, auch wenn letztere nicht erforderlich sind. Wenn Sie weitere Datenknoten zu HDFS hinzufügen, ist ein Ausgleichsvorgang erforderlich, um die vorhandenen Daten auf die neu hinzugefügten Server zu verteilen.
Dieser Vorgang kann einige Zeit dauern. Auch aus Kosten- und Platzgründen kann die Skalierung eines Hadoop-Clusters in einer On-Premises-Umgebung schwierig sein. HDFS verwendet lokal angeschlossenen Speicher, der Vorteile bei der E/A-Performance bieten kann, sofern YARN die Verarbeitung auf den Servern bereitstellen kann, auf denen die zu verarbeitenden Daten gespeichert sind.
Bei stark ausgelasteten Umgebungen ist es möglich, dass die meisten Lese-/Schreibvorgänge für Daten über das Netzwerk und nicht lokal erfolgen. Cloud-Objektspeicher umfasst Technologien wie Azure Data Lake Storage, AWS S3 oder Google Cloud Storage. Er ist unabhängig von darauf zugreifenden Datenverarbeitungsressourcen und Kunden können daher weitaus größere Datenmengen in der Cloud speichern.
Kunden, die Daten im Petabyte-Bereich speichern möchten, können dies problemlos im Cloud-Objektspeicher tun. Sämtliche Lese- und Schreibvorgänge für den Cloud-Speicher erfolgen jedoch über das Netzwerk. Daher ist es wichtig, dass Anwendungen, die auf die Daten zugreifen, nach Möglichkeit Caching nutzen oder Logik einbinden, um E/A-Vorgänge zu minimieren.