web-dev-qa-db-fra.com

Quelle est la différence entre les commandes shell "hadoop fs" et les commandes shell "hdfs dfs"?

Sont-ils censés être égaux?

mais pourquoi le "hadoop fs "commandes montrent le hdfs files tandis que le "hdfs dfs "les commandes montrent les fichiers locaux?

voici les informations de version de hadoop:

Hadoop 2.0.0-mr1-cdh4.2.1 Sous-version git: //ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0.0 -mr1-cdh4.2.1/source -r Compilé par jenkins le lun 22 avr. 10:48:26 PDT 2013

96
Charlie Lin

Voici les trois commandes qui semblent identiques mais qui présentent des différences minimes

  1. hadoop fs {args}
  2. hadoop dfs {args}
  3. hdfs dfs {args}

  hadoop fs <args>

FS se rapporte à un système de fichiers générique pouvant pointer vers n’importe quel système de fichiers tel que local, HDFS, etc. Cela peut donc être utilisé lorsque vous traitez avec différents systèmes de fichiers tels que FS local, (S) FTP, S3, etc.


  hadoop dfs <args>

dFS est très spécifique à HDFS. travaillerait pour l'opération concerne HDFS. Ceci est déconseillé et nous devrions utiliser hdfs dfs à la place.


  hdfs dfs <args>

identique à 2nd i.e fonctionnerait pour toutes les opérations liées à HDFS et est la commande recommandée à la place de hadoop dfs

la liste ci-dessous correspond à la liste des commandes hdfs.

  namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

Ainsi, même si vous utilisez hadoop dfs , il cherchera à localiser hdfs et déléguera cette commande à hdfs dfs

122
dpsdce

enter image description here

https://hadoop.Apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

Le système de fichiers (FS) comprend diverses commandes similaires à celles du shell qui interagissent directement avec le système de fichiers distribué HDFS (Hadoop), ainsi qu’avec d’autres systèmes de fichiers pris en charge par Hadoop, tels que FS local, WebHDFS, S3 FS, etc.

bin/hadoop fs <args>

Toutes les commandes FS Shell prennent les URI de chemin d'accès comme arguments. Le format de l'URI est schéma: // autorité/chemin. Pour HDFS, le schéma est hdfs et pour le local FS, le fichier est. 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 étant hdfs: // namenodehost/parent/child ou simplement/parent/enfant (étant donné que votre configuration est définie pour pointer vers hdfs: // namenodehost).

La plupart des commandes de FS Shell 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 à stdout.

Si HDFS est utilisé,

hDFS DFS

est un synonyme.

26
novice

D'après ce que je peux dire, il n'y a pas de différence entre hdfs dfs et hadoop 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 dans 1.2.1 utilisent hdfs dfs tandis que .19 utilise hadoop 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 (fichiers hdfs, fichier, 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 est configuré pour utiliser HDFS comme modèle par défaut dans votre configuration. Le hdfs dfs La commande peut être laissée avant, et comme elle n’est pas spécifiée dans la configuration, elle peut simplement servir de système par défaut au système de fichiers local.

Donc, je voudrais juste rester avec hadoop fs et ne vous inquiétez pas trop car dans la documentation, ils sont identiques.

5
Eric Alberson

fs fait référence à n’importe quel système de fichiers, qu’il soit local ou HDFS mais dfs ne concerne que le 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 solution.

4
Ashish Bindal

FS se rapporte à un système de fichiers générique qui peut pointer vers n'importe quel système de fichiers tel que 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 de/vers local ou hadoop distribué vers la destination. Mais spécifier DFS opération concerne HDFS.

Vous trouverez ci-dessous des extraits de la documentation hadoop décrivant ces deux sous-types.

FS Shell Le Shell FileSystem (FS) est appelé par bin/hadoop fs. Toutes les commandes FS Shell prennent les URI de chemins 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 fichier est. Le schéma et les droits 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 suit: hdfs: // namenodehost/parent/child ou tout simplement comme/parent/child (étant donné que votre configuration est définie pour pointer sur hdfs: // namenodehost). La plupart des commandes de FS Shell se comportent comme les commandes Unix correspondantes.

DFShell Le shell HDFS est appelé par bin/hadoop dfs. Toutes les commandes du shell HDFS prennent les URI de chemin comme arguments. Le format de l'URI est scheme: // autority/path. Pour HDFS, le schéma est hdfs et pour le système de fichiers local, le 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 étant hdfs: // namenode: namenodeport/parent/child ou tout simplement comme/parent/enfant (étant donné que votre configuration est définie pour pointer vers namenode: namenodeport). La plupart des commandes de HDFS Shell se comportent comme des commandes Unix correspondantes.

Donc, de ce qui précède, on peut conclure que tout dépend de la configuration du schéma. Lorsque vous utilisez ces deux commandes avec l’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 fichier et hdfs pour fs et dfs respectivement, ce qui est la cause de la différence de comportement.

3
Isaac Aldana

fs = système de fichiers
dfs = système de fichiers distribué

fs = autres systèmes de fichiers + systèmes de fichiers distribués

FS se rapporte à un système de fichiers générique qui peut pointer vers n’importe quel système de fichiers tel que 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 de/vers local ou hadoop distribué vers la destination. Toutefois, la spécification de l'opération DFS concerne HDFS.

Tout dépend de la configuration du schéma. Lorsque vous utilisez ces deux commandes avec l’URI absolu, c’est-à-dire scheme://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.

2
user8144911