commands comandos hadoop uri hdfs

comandos - hadoop fs-ls resulta en "no existe tal archivo o directorio"



tail hdfs (5)

El directorio de usuario en Hadoop es (en HDFS)

/user/<your operational system user>

Si recibe este mensaje de error, puede deberse a que aún no ha creado su directorio de usuario dentro de HDFS.

Utilizar

hadoop fs -mkdir -p /user/<current o.p. user directory>

Para ver cuál es su usuario actual del sistema operacional, use:

id -un

hadoop fs -ls debería comenzar a funcionar ...

He instalado y configurado Hadoop 2.5.2 para un clúster de 10 nodos. 1 está actuando como nodo maestro y otros nodos como esclavos.

Tengo un problema al ejecutar los comandos de hadoop fs. El comando hadoop fs -ls funciona bien con HDFS URI. Da el mensaje "ls:`. '': No hay tal archivo o directorio "cuando se usa sin HDFS URI

ubuntu@101-master:~$ hadoop fs -ls 15/01/30 17:03:49 WARN util.NativeCodeLoader: Unable to load native-hadoop ibrary for your platform... using builtin-java classes where applicable ls: `.'': No such file or directory ubuntu@101-master:~$

Considerando que, al ejecutar el mismo comando con HDFS URI

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/ 15/01/30 17:14:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 3 items drwxr-xr-x - ubuntu supergroup 0 2015-01-28 12:07 hdfs://101-master:50000/hvision-data -rw-r--r-- 2 ubuntu supergroup 15512587 2015-01-28 11:50 hdfs://101-master:50000/testimage.seq drwxr-xr-x - ubuntu supergroup 0 2015-01-30 17:03 hdfs://101-master:50000/wrodcount-in ubuntu@101-master:~$

Estoy recibiendo una excepción en el programa MapReduce debido a este comportamiento. jarlib se refiere a la ubicación del archivo HDFS, mientras que, quiero que jarlib haga referencia a los archivos jar almacenados en el sistema de archivos local en los nodos Hadoop.


Hay un par de cosas trabajando aquí; basado en "jarlib se refiere a la ubicación del archivo HDFS", parece que tiene una ruta HDFS configurada como fs.default.name , que de hecho es la configuración típica. Por lo tanto, cuando escribe hadoop fs -ls , esto de hecho está tratando de buscar dentro de HDFS, excepto que está buscando en su directorio de trabajo actual , que debería ser algo así como hdfs://101-master:50000/user/ubuntu . El mensaje de error es desafortunadamente algo confuso ya que no te dice eso . fue interpretado como ese camino completo. Si tiene hadoop fs -mkdir /user/ubuntu entonces hadoop fs -ls debería comenzar a funcionar.

Este problema no está relacionado con su problema "jarlib"; siempre que quiera referir archivos almacenados explícitamente en el sistema de archivos local, pero donde la ruta pasa por la resolución de Path de Hadoop, simplemente necesita agregar el file:/// para forzar a Hadoop a referirse al sistema de archivos local. Por ejemplo:

hadoop fs -ls file:///tmp

Intente pasar sus rutas de archivos jar como file:///path/to/your/jarfile y debería funcionar.


Se espera el comportamiento que estás viendo, déjame explicarte qué sucede cuando trabajas con los comandos de hadoop fs .

La sintaxis del comando es esta: hadoop fs -ls [path]

De forma predeterminada, cuando no especifica [path] para el comando anterior, hadoop expande la ruta a /home/[username] en hdfs; donde [username] se reemplaza con el nombre de usuario de Linux que está ejecutando el comando.

Entonces, cuando ejecutas este comando:

ubuntu@xad101-master:~$ hadoop fs -ls

la razón por la que está viendo el error es ls: ''.'': No such file or directory existe ls: ''.'': No such file or directory porque hadoop está buscando esta ruta /home/ubuntu , parece que esta ruta no existe en hdfs.

La razón por la cual este comando:

ubuntu@101-master:~$ hadoop fs -ls hdfs://101-master:50000/

está funcionando porque, ha especificado explícitamente [path] y es la raíz de los hdfs. También puedes hacer lo mismo usando esto:

ubuntu@101-master:~$ hadoop fs -ls /

que se evalúa automáticamente a la raíz de hdfs.

Espero, esto borra el comportamiento que estás viendo mientras hadoop fs -ls comando hadoop fs -ls .

Por lo tanto, si desea especificar la ruta del sistema de archivos local, use file:/// esquema file:/// url.


WARN util.NativeCodeLoader: no se puede cargar la biblioteca native-hadoop para su plataforma ... usando clases incorporadas en java, donde corresponda

Este error se eliminará usando este comando en el archivo .bashrc:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native" ------------------------------------------------------ /usr/local/hadoop is location where hadoop is install -------------------------------------------------------


esto tiene que ver con el directorio de inicio que falta para el usuario. Una vez que creé el directorio de inicio en hdfs para el usuario que inició sesión, funcionó como un encanto.

hdfs dfs -mkdir /user hdfs dfs -mkdir /user/{loggedin user} hdfs dfs -ls

este método solucionó mi problema.