¿Se supone que son iguales?
pero, ¿por qué los hadoop fs
comandos " " muestran el hdfs files
mientras que los hdfs dfs
comandos " " muestran los archivos locales?
aquí está la información de la versión de 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 Compilado por jenkins el lunes 22 de abril a las 10:48:26 PDT de 2013
hdfs dfs
muestran los archivos hdfs.Respuestas:
Los siguientes son los tres comandos que parecen iguales pero tienen pequeñas diferencias
FS se relaciona con un sistema de archivos genérico que puede apuntar a cualquier sistema de archivos como local, HDFS, etc. Por lo tanto, esto se puede usar cuando se trata de diferentes sistemas de archivos como Local FS, (S) FTP, S3 y otros.
dfs es muy específico de HDFS. funcionaría para la operación se relaciona con HDFS. Esto ha quedado obsoleto y deberíamos usar hdfs dfs en su lugar.
Igual que 2nd, es decir, funcionaría para todas las operaciones relacionadas con HDFS y es el comando recomendado en lugar de hadoop dfs
a continuación se muestra la lista categorizada como
hdfs
comandos.Entonces, incluso si usa hadoop dfs , buscará ubicar hdfs y delegará ese comando a hdfs dfs
fuente
hadoop fs
relaciona con cualquier sistema de archivos como, local o hdfs, ¿cómo hadoop elegir mostrar el contenido del directorio raíz de HDFS cuando lo hagohadoop fs -ls /
? Además, ¿cómo puedo decirle a hadoop que muestre el contenido de mi directorio raíz local cuando ejecuto elhadoop fs -ls /
comando?file
esquema en los URI pasados como argumento a loshadoop fs
comandos (phdoop fs -ls file:///
. Ej .). Si no se dice nada, elhdfs
esquema predeterminado es AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
).hadoop fs -ls file:///
, si bien existen formas más tradicionales de enumerar archivos locales?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
El shell del sistema de archivos (FS) incluye varios comandos similares a los de un shell que interactúan directamente con el sistema de archivos distribuido de Hadoop (HDFS), así como con otros sistemas de archivos compatibles con Hadoop, como Local FS, WebHDFS, S3 FS y otros.
Todos los comandos del shell FS toman URI de ruta como argumentos. El formato de URI es esquema: // autoridad / ruta. Para HDFS, el esquema es hdfs y para Local FS, el esquema es archivo. El esquema y la autoridad son opcionales. Si no se especifica, se utiliza el esquema predeterminado especificado en la configuración. Un archivo o directorio HDFS como / parent / child se puede especificar como hdfs: // namenodehost / parent / child o simplemente como / parent / child (dado que su configuración está configurada para apuntar a hdfs: // namenodehost).
La mayoría de los comandos del shell FS se comportan como los correspondientes comandos de Unix. Las diferencias se describen con cada uno de los comandos. La información de error se envía a stderr y la salida se envía a stdout.
Si se utiliza HDFS,
es un sinónimo.
fuente
fs se refiere a cualquier sistema de archivos, podría ser local o HDFS, pero dfs se refiere solo al sistema de archivos HDFS. Entonces, si necesita acceder / transferir datos entre diferentes sistemas de archivos, fs es el camino a seguir.
fuente
Por lo que puedo decir, no hay diferencia entre
hdfs dfs
yhadoop fs
. Son simplemente diferentes convenciones de nomenclatura según la versión de Hadoop que esté utilizando. Por ejemplo, las notas en 1.2.1 usanhdfs dfs
mientras que 0.19 usanhadoop fs
. Observe que los comandos separados se describen literalmente. Se utilizan de forma idéntica.También tenga en cuenta que ambos comandos pueden hacer referencia a diferentes sistemas de archivos según lo que especifique (hdfs, archivo, s3, etc.). Si no aparece ningún sistema de archivos, vuelven al valor predeterminado que se especifica en su configuración.
Estás usando Hadoop 2.0.0 y parece ( basado en la documentación 2.0.5 ) que usan las versiones Alpha
hadoop fs
y está configurado para usar HDFS como el esquema predeterminado en tu configuración. Eshdfs dfs
posible que el comando se haya dejado desde antes y, dado que no se especificó en la configuración, podría estar predeterminado en el sistema de archivos local.Así que me quedaría
hadoop fs
y no me preocuparía demasiado, ya que en la documentación son idénticos.fuente
FS se relaciona con un sistema de archivos genérico que puede apuntar a cualquier sistema de archivos como local, HDFS, etc. Pero dfs es muy específico para HDFS. Entonces, cuando usamos FS , puede realizar operaciones con desde / hacia local o sistema de archivos distribuido hadoop al destino. Pero especificar la operación DFS se relaciona con HDFS.
A continuación se muestran los extractos de la documentación de hadoop que describe estos dos como shells diferentes.
Shell FS El shell FileSystem (FS) es invocado por bin / hadoop fs. Todos los comandos del shell FS toman URI de ruta como argumentos. El formato de URI es el esquema: // autoridad / ruta. Para HDFS, el esquema es hdfs, y para el sistema de archivos local, el esquema es file. El esquema y la autoridad son opcionales. Si no se especifica, se utiliza el esquema predeterminado especificado en la configuración. Un archivo o directorio HDFS como / parent / child se puede especificar como hdfs: // namenodehost / parent / child o simplemente como / parent / child (dado que su configuración está configurada para apuntar a hdfs: // namenodehost). La mayoría de los comandos del shell FS se comportan como los correspondientes comandos de Unix.
DFShell El shell HDFS es invocado por bin / hadoop dfs. Todos los comandos de shell de HDFS toman URI de ruta como argumentos. El formato de URI es el esquema: // autoridad / ruta. Para HDFS, el esquema es hdfs, y para el sistema de archivos local, el esquema es file. El esquema y la autoridad son opcionales. Si no se especifica, se utiliza el esquema predeterminado especificado en la configuración. Un archivo o directorio HDFS como / parent / child se puede especificar como hdfs: // namenode: namenodeport / parent / child o simplemente como / parent / child (dado que su configuración está configurada para apuntar a namenode: namenodeport). La mayoría de los comandos del shell HDFS se comportan como los correspondientes comandos de Unix.
Entonces, de lo anterior se puede concluir que todo depende de la configuración del esquema. Cuando se utilizan estos dos comandos con URI absoluto, es decir, esquema: // a / b, el comportamiento será idéntico. Solo es el valor de esquema configurado predeterminado para el archivo y hdfs para fs y dfs, respectivamente, lo que es la causa de la diferencia de comportamiento.
fuente
fs
= sistema de archivosdfs
= sistema de archivos distribuidofs
= otros sistemas de archivos + sistemas de archivos distribuidosFS se relaciona con un sistema de archivos genérico que puede apuntar a cualquier sistema de archivos como local, HDFS, etc. Pero dfs es muy específico para HDFS. Entonces, cuando usamos FS, puede realizar operaciones con desde / hacia local o sistema de archivos distribuido hadoop al destino. Pero especificar la operación DFS se relaciona con HDFS.
Todo depende de la configuración del esquema. Cuando se utilizan estos dos comandos con URI absoluto, es decir,
scheme://a/b
el comportamiento será idéntico. Solo es el valor del esquema configurado por defecto parafile://
yhdfs://
parafs
y,dfs
respectivamente, que es la causa de la diferencia de comportamiento.fuente