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.