Sollen sie gleich sein?
Aber warum hadoop fs
zeigen die Befehle " " die, hdfs files
während die hdfs dfs
Befehle " " die lokalen Dateien anzeigen?
Hier sind die Informationen zur Hadoop-Version:
Hadoop 2.0.0-mr1-cdh4.2.1 Subversion git: //ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0 -mr1-cdh4.2.1 / source -r Zusammengestellt von Jenkins am Montag, 22. April, 10:48:26 PDT 2013
hdfs dfs
zeigt auch die HDFS-Dateien.Antworten:
Es folgen die drei Befehle, die gleich aussehen, aber winzige Unterschiede aufweisen
FS bezieht sich auf ein generisches Dateisystem, das auf beliebige Dateisysteme wie Local, HDFS usw. verweisen kann. Dies kann also verwendet werden, wenn Sie mit verschiedenen Dateisystemen wie Local FS, (S) FTP, S3 und anderen arbeiten
dfs ist sehr spezifisch für HDFS. würde für den Betrieb arbeiten bezieht sich auf HDFS. Dies ist veraltet und wir sollten stattdessen hdfs dfs verwenden.
Das gleiche wie 2nd, dh es würde für alle Operationen im Zusammenhang mit HDFS funktionieren und ist der empfohlene Befehl anstelle von hadoop dfs
Unten ist die Liste als
hdfs
Befehle kategorisiert .Selbst wenn Sie hadoop dfs verwenden , wird hdfs suchen und diesen Befehl an hdfs dfs delegieren
quelle
hadoop fs
sich um ein Dateisystem wie "local" oder "hdfs" handelt, wie hat hadoop dann den Inhalt des HDFS-Stammverzeichnisses angezeigt, wenn ich dies tuehadoop fs -ls /
? Wie kann ich hadoop anweisen, meinen lokalen Stammverzeichnisinhalt anzuzeigen, wenn ich denhadoop fs -ls /
Befehl ausführe ?file
Schema an den URIs verwenden, die als Argument anhadoop fs
Befehle übergeben werden (zhdoop fs -ls file:///
. B. ). Wenn nichts gesagt wird, wird standardmäßig dashdfs
Schema AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
) verwendet.hadoop fs -ls file:///
, während es traditionellere Möglichkeiten gibt, lokale Dateien aufzulisten?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
Die Dateisystem-Shell (FS) enthält verschiedene Shell-ähnliche Befehle, die direkt mit dem Hadoop Distributed File System (HDFS) sowie anderen von Hadoop unterstützten Dateisystemen wie Local FS, WebHDFS, S3 FS und anderen interagieren.
Alle FS-Shell-Befehle verwenden Pfad-URIs als Argumente. Das URI-Format lautet Schema: // Autorität / Pfad. Für HDFS ist das Schema hdfs und für das lokale FS ist das Schema eine Datei. Das Schema und die Autorität sind optional. Wenn nicht angegeben, wird das in der Konfiguration angegebene Standardschema verwendet. Eine HDFS-Datei oder ein HDFS-Verzeichnis wie / parent / child kann als hdfs: // namenodehost / parent / child oder einfach als / parent / child angegeben werden (vorausgesetzt, Ihre Konfiguration zeigt auf hdfs: // namenodehost).
Die meisten Befehle in der FS-Shell verhalten sich wie entsprechende Unix-Befehle. Unterschiede werden mit jedem der Befehle beschrieben. Fehlerinformationen werden an stderr gesendet und die Ausgabe wird an stdout gesendet.
Wenn HDFS verwendet wird,
ist ein Synonym.
quelle
fs bezieht sich auf ein beliebiges Dateisystem, es kann lokal oder HDFS sein, aber dfs bezieht sich nur auf das HDFS-Dateisystem. Wenn Sie also Zugriffs- / Übertragungsdaten zwischen verschiedenen Dateisystemen ausführen müssen, ist fs der richtige Weg.
quelle
Soweit ich das beurteilen kann, gibt es keinen Unterschied zwischen
hdfs dfs
undhadoop fs
. Es handelt sich lediglich um unterschiedliche Namenskonventionen, je nachdem, welche Version von Hadoop Sie verwenden. Zum Beispiel werden die Notizen in 1.2.1 verwendet,hdfs dfs
während 0.19 verwendet wirdhadoop fs
. Beachten Sie, dass die einzelnen Befehle wörtlich beschrieben werden. Sie werden identisch verwendet.Beachten Sie auch, dass beide Befehle je nach Ihren Angaben (hdfs, file, s3 usw.) auf unterschiedliche Dateisysteme verweisen können. Wenn kein Dateisystem aufgeführt ist, wird auf den in Ihrer Konfiguration angegebenen Standard zurückgegriffen.
Sie verwenden Hadoop 2.0.0 und es sieht so aus , als würden Alpha-Versionen ( basierend auf der 2.0.5-Dokumentation )
hadoop fs
HDFS als Standardschema in Ihrer Konfiguration verwenden. Derhdfs dfs
Befehl wird möglicherweise von zuvor belassen und kann, da er nicht in der Konfiguration angegeben ist, standardmäßig das lokale Dateisystem verwenden.Ich würde mich also einfach daran halten
hadoop fs
und mir keine Sorgen machen, da sie in der Dokumentation identisch sind.quelle
FS bezieht sich auf ein generisches Dateisystem, das auf alle Dateisysteme wie lokal, HDFS usw. verweisen kann. Dfs ist jedoch sehr spezifisch für HDFS. Wenn wir also FS verwenden , kann es Operationen mit von / zu lokalem oder Hadoop-verteiltem Dateisystem zum Ziel ausführen. Die Angabe der DFS- Operation bezieht sich jedoch auf HDFS.
Nachfolgend finden Sie die Auszüge aus der Hadoop-Dokumentation, in der diese beiden als unterschiedliche Shells beschrieben werden.
FS-Shell Die FileSystem (FS) -Shell wird von bin / hadoop fs aufgerufen. Alle FS-Shell-Befehle verwenden Pfad-URIs als Argumente. Das URI-Format lautet Schema: // Autorität / Pfad. Für HDFS ist das Schema hdfs, und für das lokale Dateisystem ist das Schema Datei. Das Schema und die Autorität sind optional. Wenn nicht angegeben, wird das in der Konfiguration angegebene Standardschema verwendet. Eine HDFS-Datei oder ein HDFS-Verzeichnis wie / parent / child kann als hdfs: // namenodehost / parent / child oder einfach als / parent / child angegeben werden (vorausgesetzt, Ihre Konfiguration zeigt auf hdfs: // namenodehost). Die meisten Befehle in der FS-Shell verhalten sich wie entsprechende Unix-Befehle.
DFShell Die HDFS-Shell wird von bin / hadoop dfs aufgerufen. Alle HDFS-Shell-Befehle verwenden Pfad-URIs als Argumente. Das URI-Format lautet Schema: // Autorität / Pfad. Für HDFS ist das Schema hdfs, und für das lokale Dateisystem ist das Schema Datei. Das Schema und die Autorität sind optional. Wenn nicht angegeben, wird das in der Konfiguration angegebene Standardschema verwendet. Eine HDFS-Datei oder ein HDFS-Verzeichnis wie / parent / child kann als hdfs: // namenode: namenodeport / parent / child oder einfach als / parent / child angegeben werden (vorausgesetzt, Ihre Konfiguration zeigt auf namenode: namenodeport). Die meisten Befehle in der HDFS-Shell verhalten sich wie entsprechende Unix-Befehle.
Aus dem Obigen kann also geschlossen werden, dass alles von der Konfiguration des Schemas abhängt. Bei Verwendung dieser beiden Befehle mit absolutem URI, dh Schema: // a / b, muss das Verhalten identisch sein. Nur der standardmäßig konfigurierte Schemawert für file und hdfs für fs bzw. dfs ist die Ursache für unterschiedliche Verhaltensweisen.
quelle
fs
= Dateisystemdfs
= verteiltes Dateisystemfs
= andere Dateisysteme + verteilte DateisystemeFS bezieht sich auf ein generisches Dateisystem, das auf alle Dateisysteme wie lokal, HDFS usw. verweisen kann. Dfs ist jedoch sehr spezifisch für HDFS. Wenn wir also FS verwenden, kann es Operationen mit von / zu lokalem oder Hadoop-verteiltem Dateisystem zum Ziel ausführen. Die Angabe der DFS-Operation bezieht sich jedoch auf HDFS.
Es hängt alles vom konfigurierten Schema ab. Bei Verwendung dieser beiden Befehle mit absolutem URI muss
scheme://a/b
das Verhalten identisch sein. Nur sein Der Standardwert für Schema konfiguriertefile://
undhdfs://
fürfs
unddfs
jeweils die die Ursache für den Unterschied im Verhalten ist.quelle