Verwalten von Dateien mit der Hadoop-Dateisystem-Befehle

HDFS ist eine der beiden Hauptkomponenten des Hadoop Framework- die andere der Rechen Paradigma MapReduce bekannt ist. EIN verteilte Dateisystem ist ein Dateisystem, das Speicher über eine Netzwerkclusters von Maschinen verwaltet.

HDFS speichert Daten in Blöcke, Einheiten, deren Standardgröße beträgt 64 MB. Dateien, die Sie in HDFS gespeichert wollen, müssen in den Block-Größe Stücke gebrochen werden, die dann unabhängig im gesamten Cluster gespeichert. Sie können die fsck Zeilenbefehl verwenden, um die Blöcke auflisten, die jede Datei in HDFS bilden, wie folgt:

% Hadoop fsck / -Dateien -Blöcke

Da Hadoop in Java geschrieben ist, werden alle Interaktionen mit HDFS werden über die Java-API verwaltet. Beachten Sie aber, dass Sie nicht über ein Java-Guru arbeiten mit Dateien in HDFS sein müssen. Mehrere Hadoop-Schnittstellen auf dem API Java gebaut sind jetzt im allgemeinen Gebrauch (und verstecken Java), aber die einfachste ist der Befehlszeile die Befehlszeile interface- verwenden mit HDFS in den Beispielen zur Verfügung gestellt zu interagieren.

Der Zugriff auf die System-Shell Hadoop-Datei durch eine Form des Hadoop-Befehl ausgeführt wird. Alle hadoop Befehle werden von der bin / hadoop Skript aufgerufen. (Um eine Beschreibung aller hadoop Befehle abrufen, die Hadoop-Skript ausführen, ohne irgendwelche Argumente angeben.) Der hadoop Befehl hat die Syntax

Hadoop [--config Confdir] [Befehl] [GENERIC_OPTIONS] [COMMAND_OPTIONS]

Das --config-Confdir Option überschreibt die Standard-Konfigurationsverzeichnis ($ HADOOP_HOME / conf), So dass Sie leicht Ihre Hadoop-Umgebung Konfiguration anpassen können. Die allgemeinen Optionen und Befehlsoptionen sind eine gemeinsame Reihe von Optionen, die von mehreren Befehlen unterstützt werden.

Hadoop-Dateisystem-Shell-Befehle (für Kommandozeilen-Interface) nehmen (Uniform Resource Identifiers URIs) als Argumente. EIN URI ist eine Zeichenfolge, die einen Namen zu identifizieren oder eine Web-Ressource verwendet wird.

Die Zeichenfolge kann eine umfassen Schemaname - eine Qualifikation für die Art der Datenquelle. Für HDFS ist die Regelung Name hdfs, und für das lokale Dateisystem, ist das Schema Dateinamen. Wenn Sie keinen Schemanamen angeben, wird standardmäßig das Schema Name, der in der Konfigurationsdatei angegeben wird. Eine Datei oder ein Verzeichnis in HDFS kann in einem vollständig qualifizierten Weg, wie in diesem Beispiel angegeben werden:

hdfs: // namenodehost / Eltern / Kind

Oder es kann einfach sein / Eltern / Kind, wenn die Konfigurationsdatei verweist auf hdfs: // namenodehost.

Die Hadoop-Dateisystem-Shell-Befehle, die auf Befehle Datei Linux ähnlich sind, haben die folgende allgemeine Syntax:

hadoop HDFS dfs -file_cmd

Leser mit einigen früheren Hadoop Erfahrung könnte fragen, # 147-Aber was ist mit dem hadoop fs Befehl? # 148- Die fs Befehl ist in der Hadoop 0.2 Release-Serie ist veraltet, aber es immer noch in Hadoop 2. Verwenden Sie funktioniert hdfs dfs stattdessen.

Wie Sie vielleicht erwarten, verwenden Sie die mkdir Befehl ein Verzeichnis in HDFS zu erstellen, wie Sie unter Linux oder auf Unix-basierten Betriebssystemen tun würde. Obwohl HDFS ein Standard-Arbeitsverzeichnis hat, / User / $ USER, woher $ USER ist Ihr Benutzername, müssen Sie es selbst zu erstellen, indem Sie die Syntax

Hadoop $ hdfs dfs -mkdir / user /login_user_name

Um zum Beispiel ein Verzeichnis mit dem Namen zu erstellen # 147-joanna # 148-, führen diese mkdir Befehl:

Hadoop $ hdfs dfs -mkdir / user / joanna

Verwenden Sie die Hadoop stellen Befehl, um eine Datei aus dem lokalen Dateisystem HDFS zu kopieren:

$ Hadoop hdfs dfs -Setzen Dateiname /Benutzer/login_user_name

Um zum Beispiel eine Datei mit dem Namen data.txt in dieses neue Verzeichnis zu kopieren, führen Sie den folgenden stellen Befehl:

Hadoop $ hdfs dfs -Setzen data.txt / user / joanna

Führen Sie die ls Befehl eine HDFS Dateiliste zu erhalten:

$ Hadoop hdfs dfs -ls .Found 2 itemsdrwxr-xr-x - joanna Supergruppe 0 2013.06.30 00.25 / user / joanna-rw-r - r-- 1 joanna Supergruppe 118 2013.06.30 12: 15 /user/joanna/data.txt

Die Datei selbst Listing setzt sich wie in dieser Liste beschrieben:

  • Spalte 1 zeigt die Dateimodus (# 147-d # 148- für Verzeichnis und # 147 - # 148- für normale Datei, die von den Berechtigungen gefolgt). Die drei Berechtigungstypen - lesen (r), Schreiben (w) und Ausführen (x) - sind die gleichen, wie Sie auf Linux- und Unix-basierten Systemen finden. Die Ausführungsrechte für eine Datei wird ignoriert, da Sie eine Datei nicht auf HDFS ausführen kann. Die Berechtigungen werden durch Eigentümer, Gruppe zusammengefasst und der Öffentlichkeit (alle anderen).

  • Spalte 2 zeigt den Replikationsfaktor für Dateien. (Das Konzept der Replikation gilt nicht für Verzeichnisse.) Die Blöcke, die eine Datei in HDFS bilden repliziert Fehlertoleranz zu gewährleisten. Das Replikationsfaktor, oder die Anzahl der Kopien, die für eine bestimmte Datei gehalten werden, ist konfigurierbar. Sie können den Replikationsfaktor angeben, wenn die Datei oder später erstellt wird, über Ihre Bewerbung.

  • Die Spalten 3 und 4 zeigen die Datei Eigentümer und Gruppe. Supergroup ist der Name der Gruppe der Superuser und eine Super-User ist der Benutzer mit der gleichen Identität wie die NameNode Prozess. Wenn Sie die NameNode beginnen, du bist der Superuser für jetzt. Dies ist eine besondere Gruppe - regelmäßige Benutzer ihre Benutzer-IDs zu einer Gruppe ohne besondere Eigenschaften gehören, haben wird - eine Gruppe, die von einem Hadoop-Administrator einfach definiert ist.

  • Spalte 5 zeigt die Größe der Datei, in Bytes oder 0, wenn es ein Verzeichnis ist.

  • Spalten 6 und 7 zeigen das Datum und die Uhrzeit der letzten Änderung, beziehungsweise.

  • Spalte 8 zeigt den unqualifizierten Namen (was bedeutet, dass die Regelung Name nicht angegeben ist) der Datei oder des Verzeichnisses.

Verwenden Sie den Befehl get Hadoop eine Datei von HDFS in Ihrem lokalen Dateisystem zu kopieren:

$ Hadoop hdfs dfs -get Dateiname /Benutzer/login_user_name

Verwenden Sie die Hadoop rm Befehl eine Datei oder ein leeres Verzeichnis zu löschen:

$ Hadoop hdfs dfs -rm Dateiname /Benutzer/login_user_name

Verwenden Sie die hadoop hdfs dfs -Hilfe Befehl erhalten ausführliche Hilfe für jede Option.

Menü