Apache Hadoop: Diferencia entre hadoop fs y hdfs dfs

diferencia entre hadoop fs y hdfs dfsEn este artículo vamos a explicar la diferencia entre hadoop fs y hdfs dfs. El ambiguo uso que se hace de estos dos comandos en distintos tutoriales y ejemplos que se pueden encontrar en la red pueden llevar a confusión o a interpretar que ambos son lo mismo. Sin embargo, no son exactamente lo mismo.

La principal diferencia radica en que FS indica un sistema de archivos genérico que puede apuntar a cualquier sistema de archivos, como FS locales, HFTP FS, S3 FS y otros (incluido HDFS). Sin embargo, el comando “hdfs” es específico para HDFS. Por ejemplo, cuando se usa “hadoop fs” se pueden copiar, mover, obtener… ficheros entre un sistema de archivos local y HDFS, o cualquier otro sistema de ficheros, y viceversa pero cuando se especifica DFS, mediante “hdfs dfs” el filesystem debe estar en dicho formato obligatoriamente.

Se puede decir por tanto, que el uso del comando “hadoop fs” es de uso más genérico mientras que el uso de “hdfs dfs” es específico para este filesystem en concreto. Por esto, el comando “hadoop fs” toma como parámetros URIs del tipo “scheme://autority/path”, es decir, hay que especificarle el tipo de filesystem (scheme) y sino se especifica se toma HDFS por defecto (autority también es opcional).

Esto queda más patente aún cuando se intenta ejecutar el comando “hadoop dfs“, el cual era usado en versiones anteriores y que ya se ha marcado como obsoleto y recomienda el uso de hdfs para interactuar con este tipo de filesystem:

hadoop dfs
DEPRECATED: Use of this script to execute hdfs command is deprecated. 
Instead use the hdfs command for it.

Para especificar un directorio HDFS se debe hacer mediante hdfs://namenodehost/parent/child o simplemente mediante /parent/child si la configuración apunta a hdfs://namenodehost.

La conclusión es la siguiente: Si ambos comandos se ejecutan pasando URIs como parámetros, siendo HDFS el filesystem, se comportan exactamente del mismo modo.

Como nota adicional, comentar que la mayoría de los comandos FS y HDFS poseen exactamente la misma funcionalidad que los correspondientes comandos Unix.

Espero que les haya quedado más o menos claro la diferencia entre hadoop fs y hdfs dfs y, tanto en caso contrario como para añadir o corregir cualquier detalle, no duden en dejar un comentario ya que este artículo se basa en mucha investigación y por ello esta sujeto a errores y mejoras.

Happy Minds!!!

Share on FacebookTweet about this on TwitterShare on LinkedInShare on RedditShare on Google+Digg thisShare on TumblrPin on PinterestBuffer this pagePrint this pageEmail this to someone