Sont-ils censés être égaux?
mais, pourquoi les hadoop fs
commandes " " affichent les commandes hdfs files
tandis que les hdfs dfs
commandes " " affichent les fichiers locaux?
voici les informations de version de hadoop:
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 Compilé par jenkins le lundi 22 avril 10:48:26 PDT 2013
hdfs dfs
spectacle les fichiers hdfs aussi.Réponses:
Voici les trois commandes qui semblent identiques mais ont des différences minimes
FS se rapporte à un système de fichiers générique qui peut pointer vers n'importe quel système de fichiers comme local, HDFS etc. Cela peut donc être utilisé lorsque vous traitez avec différents systèmes de fichiers tels que Local FS, (S) FTP, S3 et autres
dfs est très spécifique à HDFS. fonctionnerait pour le fonctionnement concerne HDFS. Cela est obsolète et nous devrions utiliser hdfs dfs à la place.
idem 2nd ie fonctionnerait pour toutes les opérations liées à HDFS et est la commande recommandée au lieu de hadoop dfs
ci-dessous se trouve la liste classée comme
hdfs
commandes.Donc, même si vous utilisez hadoop dfs , il cherchera à localiser hdfs et à déléguer cette commande à hdfs dfs
la source
hadoop fs
concerne un système de fichiers comme, local ou hdfs, comment hadoop choisit d'afficher le contenu du répertoire racine HDFS lorsque je le faishadoop fs -ls /
? Aussi, comment puis-je dire à hadoop d'afficher le contenu de mon répertoire racine local lorsque j'exécute lahadoop fs -ls /
commande?file
schéma au niveau des URI passés comme argument auxhadoop fs
commandes (par exemplehdoop fs -ls file:///
). Si rien n'est dit, la valeur par défaut esthdfs
schema, AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
).hadoop fs -ls file:///
, alors qu'il existe des méthodes plus traditionnelles pour répertorier les fichiers locaux?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
Le shell du système de fichiers (FS) comprend diverses commandes de type shell qui interagissent directement avec le système de fichiers distribués Hadoop (HDFS) ainsi qu'avec d'autres systèmes de fichiers pris en charge par Hadoop, tels que Local FS, WebHDFS, S3 FS et autres.
Toutes les commandes shell FS prennent les URI de chemin comme arguments. Le format URI est schéma: // autorité / chemin. Pour HDFS, le schéma est hdfs, et pour le FS local, le schéma est fichier. Le schéma et l'autorité sont facultatifs. S'il n'est pas spécifié, le schéma par défaut spécifié dans la configuration est utilisé. Un fichier ou un répertoire HDFS tel que / parent / child peut être spécifié comme hdfs: // namenodehost / parent / child ou simplement comme / parent / child (étant donné que votre configuration est définie pour pointer vers hdfs: // namenodehost).
La plupart des commandes du shell FS se comportent comme des commandes Unix correspondantes. Les différences sont décrites avec chacune des commandes. Les informations d'erreur sont envoyées à stderr et la sortie est envoyée à stdout.
Si HDFS est utilisé,
est un synonyme.
la source
fs fait référence à n'importe quel système de fichiers, il peut être local ou HDFS mais dfs se réfère uniquement au système de fichiers HDFS. Donc, si vous devez effectuer un accès / transfert de données entre différents systèmes de fichiers, fs est la voie à suivre.
la source
D'après ce que je peux dire, il n'y a aucune différence entre
hdfs dfs
ethadoop fs
. Ce sont simplement des conventions de dénomination différentes en fonction de la version de Hadoop que vous utilisez. Par exemple, les notes de 1.2.1 utilisenthdfs dfs
tandis que 0.19 utilisehadoop fs
. Notez que les commandes séparées sont décrites textuellement. Ils sont utilisés à l'identique.Notez également que les deux commandes peuvent faire référence à différents systèmes de fichiers en fonction de ce que vous spécifiez (hdfs, file, s3, etc.). Si aucun système de fichiers n'est répertorié, ils reviennent à la valeur par défaut spécifiée dans votre configuration.
Vous utilisez Hadoop 2.0.0 et il semble ( basé sur la documentation 2.0.5 ) que les versions Alpha utilisent
hadoop fs
et sont configurées pour utiliser le HDFS comme schéma par défaut dans votre configuration. Lahdfs dfs
commande peut être laissée depuis avant, et comme elle n'est pas spécifiée dans la configuration, elle pourrait simplement être utilisée par défaut sur le système de fichiers local.Donc je m'en tiens simplement
hadoop fs
et ne m'inquiète pas trop car dans la documentation, ils sont identiques.la source
FS se rapporte à un système de fichiers générique qui peut pointer vers n'importe quel système de fichiers comme local, HDFS, etc. Mais dfs est très spécifique à HDFS. Ainsi, lorsque nous utilisons FS, il peut effectuer des opérations avec le système de fichiers distribué from / to local ou hadoop vers la destination. Mais la spécification du fonctionnement DFS concerne HDFS.
Vous trouverez ci-dessous des extraits de la documentation hadoop qui décrit ces deux shells différents.
Shell FS Le shell FileSystem (FS) est appelé par bin / hadoop fs. Toutes les commandes du shell FS prennent les URI de chemin comme arguments. Le format de l'URI est schéma: // autorité / chemin. Pour HDFS, le schéma est hdfs et pour le système de fichiers local, le schéma est file. Le schéma et l'autorité sont facultatifs. S'il n'est pas spécifié, le schéma par défaut spécifié dans la configuration est utilisé. Un fichier ou un répertoire HDFS tel que / parent / child peut être spécifié comme hdfs: // namenodehost / parent / child ou simplement comme / parent / child (étant donné que votre configuration est définie pour pointer vers hdfs: // namenodehost). La plupart des commandes du shell FS se comportent comme des commandes Unix correspondantes.
DFShell Le shell HDFS est appelé par bin / hadoop dfs. Toutes les commandes shell HDFS prennent les URI de chemin comme arguments. Le format de l'URI est schéma: // autorité / chemin. Pour HDFS, le schéma est hdfs et pour le système de fichiers local, le schéma est file. Le schéma et l'autorité sont facultatifs. S'il n'est pas spécifié, le schéma par défaut spécifié dans la configuration est utilisé. Un fichier ou un répertoire HDFS tel que / parent / child peut être spécifié comme hdfs: // namenode: namenodeport / parent / child ou simplement comme / parent / child (étant donné que votre configuration est définie pour pointer vers namenode: namenodeport). La plupart des commandes du shell HDFS se comportent comme des commandes Unix correspondantes.
Donc, à partir de ce qui précède, on peut conclure que tout dépend du schéma configuré. Lors de l'utilisation de ces deux commandes avec un URI absolu, c'est-à-dire schéma: // a / b, le comportement doit être identique. Seule sa valeur de schéma configurée par défaut pour file et hdfs pour fs et dfs respectivement, ce qui est la cause de la différence de comportement.
la source
fs
= système de fichiersdfs
= système de fichiers distribuéfs
= autres systèmes de fichiers + systèmes de fichiers distribuésFS se rapporte à un système de fichiers générique qui peut pointer vers n'importe quel système de fichiers comme local, HDFS, etc. Mais dfs est très spécifique à HDFS. Ainsi, lorsque nous utilisons FS, il peut effectuer des opérations avec le système de fichiers distribué from / to local ou hadoop vers la destination. Mais la spécification du fonctionnement DFS concerne HDFS.
Tout dépend du schéma configuré. Lors de l'utilisation de ces deux commandes avec URI absolu, c'est
scheme://a/b
-à- dire que le comportement doit être identique. Seule sa valeur de schéma configurée par défaut pourfile://
ethdfs://
pourfs
etdfs
respectivement, qui est la cause de la différence de comportement.la source