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

3voto

Isaac Aldana Points 31

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 Hadoop vers la destination, mais spécifier une opération DFS se rapporte à HDFS.

Vous trouverez ci-dessous les extraits de la documentation Hadoop qui décrivent ces deux coquilles comme différentes.

FS Shell :

Le shell FileSystem (FS) est invoqué par bin/hadoop fs . Toutes les commandes du shell FS 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 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 est définie pour pointer sur hdfs://namenodehost ). La plupart des commandes du shell FS se comportent comme les commandes Unix correspondantes.

DFShell :

Le shell HDFS est invoqué 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 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://namenode:namenodeport/parent/child ou simplement comme /parent/child (étant donné que votre configuration est définie pour pointer sur namenode:namenodeport ). La plupart des commandes du shell HDFS se comportent comme les commandes Unix correspondantes.

De ce qui précède, on peut conclure que tout dépend de la configuration du système. En utilisant ces deux commandes avec un URI absolu, c'est-à-dire scheme://a/b le comportement doit être identique. Seule la valeur du schéma configuré par défaut pour file et hdfs pour fs et dfs respectivement est la cause de la différence de comportement.

1voto

Le terme "fs" fait référence à un système de fichiers générique, qui par définition peut pointer vers N'IMPORTE QUEL système de fichiers (y compris HDFS), mais dfs est très spécifique. D'autre part, "DFS" fait précisément référence à l'accès au système de fichiers distribué Hadoop. Ainsi, lorsque nous utilisons FS, il peut effectuer des opérations liées au système de fichiers local ou distribué d'Hadoop et dfs peut effectuer des opérations liées au système de fichiers distribué d'Hadoop uniquement.

Donc,

  1. fs hadoop

Il est utilisé lorsque nous avons affaire à différents systèmes de fichiers tels que Local FS, HDFS, etc.

hdfs dfs

  1. Il est utilisé lorsque nous avons affaire à des opérations liées à HDFS.

Une autre commande, qui ressemble à ces deux-là, est la suivante

  1. hadoop dfs

Cette commande ne doit pas être utilisée, car elle est dépréciée. Même si vous l'utilisez, elle enverra la commande à hdfs dfs.

-1voto

Hadoop fs et hdfs dfs sont fondamentalement les mêmes. Les deux donnent le même résultat avec certaines commandes linux comme ls, rm. Vous devriez utiliser les commandes comme ceci

hadoop fs -ls <path>
hdfs dfs -ls <path>

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