128 votes

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 Les commandes " " montrent les hdfs files tandis que le " hdfs dfs Les commandes " " montrent les fichiers locaux ?

voici les informations sur la version d'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 Mon Apr 22 10:48:26 PDT 2013

162voto

Dhirendra Points 1380

Voici les trois commandes qui semblent identiques mais qui présentent d'infimes différences.

  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 qui peut pointer vers n'importe quel système de fichiers comme local, HDFS, etc. Il peut donc être utilisé lorsque vous avez affaire à différents systèmes de fichiers tels que Local FS, (S)FTP, S3, et autres.


  hadoop dfs <args>

dfs est très spécifique à HDFS. fonctionnerait pour une opération liée à HDFS. Ceci a été déprécié et nous devrions utiliser hdfs dfs à la place.


  hdfs dfs <args>

est identique à la commande 2nd, c'est-à-dire qu'elle fonctionne pour toutes les opérations liées à HDFS et est la commande recommandée à la place de hadoop dfs

La liste ci-dessous est classée par catégorie hdfs des commandes.

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

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

50voto

novice Points 1292

enter image description here

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

Le shell File System (FS) comprend diverses commandes de type shell qui interagissent directement avec le système de fichiers distribué Hadoop (HDFS) ainsi que d'autres systèmes de fichiers pris en charge par Hadoop, tels que Local FS, WebHDFS et autres. systèmes de fichiers supportés par Hadoop, tels que Local FS, WebHDFS, S3 FS, et autres.

bin/hadoop fs <args>

Toutes les commandes du shell FS prennent les URI de chemin comme arguments. Le format de l'URI est scheme://authority/path. Pour HDFS, le schéma est hdfs, et pour le FS local, le schéma est file. Le schéma et l'autorité sont facultatifs. S'ils ne sont pas spécifiés, 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 configuration est définie pour pointer vers hdfs://namenodehost).

La plupart des commandes du shell FS se comportent comme les 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é,

hdfs dfs

est un synonyme.

8voto

Ashish Bindal Points 995

fs se réfère à tout système de fichiers il pourrait être local ou HDFS mais dfs se réfère uniquement à HDFS système de fichiers. Donc si vous avez besoin d'effectuer des accès/transferts de données entre différents systèmes de fichiers, fs est la voie à suivre.

5voto

Eric Alberson Points 1108

D'après ce que je peux dire, il n'y a pas de différence entre hdfs dfs y hadoop fs . Il s'agit simplement de conventions de dénomination différentes selon la version d'Hadoop que vous utilisez. Par exemple, les notes dans 1.2.1 utiliser hdfs dfs tandis que 0.19 utilise hadoop fs . Remarquez que les différentes commandes sont décrites mot pour mot. Elles sont utilisées de manière 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 listé, elles se rabattent sur le système par défaut qui est spécifié dans votre configuration.

Vous utilisez Hadoop 2.0.0 et il semble que ( basé sur la documentation de la version 2.0.5 ) que les versions Alpha utilisent hadoop fs et est défini pour utiliser le HDFS comme schéma par défaut dans votre configuration. Le site hdfs dfs peut avoir été laissée en place, et comme elle n'est pas spécifiée dans la configuration, elle peut être utilisée par défaut sur le système de fichiers local.

Donc je m'en tiendrais à hadoop fs et ne pas trop s'inquiéter puisque dans la documentation, ils sont identiques.

5voto

user8144911 Points 51

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

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 comme local, HDFS, etc. Mais dfs est très spécifique à HDFS. Ainsi, lorsque nous utilisons FS, il peut effectuer une opération de/vers un système de fichiers local ou distribué par HDFS vers la destination. Mais la spécification de l'opération DFS concerne HDFS.

Tout dépend de la configuration du système. Lorsque vous utilisez ces deux commandes avec une URI absolue, c'est-à-dire scheme://a/b le comportement doit être identique. Seulement sa valeur de schéma configurée par défaut pour file:// y hdfs:// para fs y dfs respectivement, ce qui est la cause de la différence de comportement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X