multinodo instalar ejemplo configurar como comandos cluster java hadoop filenotfoundexception

java - instalar - hdfs



Hadoop accede a bibliotecas de terceros desde el sistema de archivos local de un nodo de Hadoop (2)

Tengo un archivo jar en todos mis nodos Hadoop en /home/ubuntu/libs/javacv-0.9.jar , con algunos otros archivos jar.

Cuando mi aplicación MapReduce se está ejecutando en los nodos de Hadoop , recibo esta excepción

java.io.FileNotFoundException: File does not exist hdfs://192.168.0.18:50000/home/ubuntu/libs/javacv-0.9.jar

¿Cómo puedo resolver esta excepción? ¿Cómo puede mi jar que se ejecuta en Hadoop acceder a bibliotecas de terceros desde el sistema de archivos local del nodo de Hadoop?


Otra opción sería usar addFileToClassPath(new Path("/myapp/mylib.jar"), job); caché distribuida addFileToClassPath(new Path("/myapp/mylib.jar"), job); para enviar los archivos Jar que se deben agregar a la ruta de clases de las tareas del asignador y del reductor.

Nota: asegúrese de copiar el archivo jar a HDFS primero.

Incluso podría agregar archivos jar a la ruta de clase mediante el argumento de línea de comandos de -libjars <jar_file> .

Nota: asegúrese de que su aplicación MapReduce implemente ToolRunner para permitir la opción -libjars desde la línea de comandos.


Debe copiar su archivo a HDFS y no al sistema de archivos local.

Para copiar archivos a HDFS, debe usar:

hadop fs -put localfile hdfsPath

Otra opción es cambiar la ruta del archivo a:

file:///home/ubuntu/libs/javacv-0.9.jar

Para agregar archivos jar a classpath, eche un vistazo a DistributedCache :

DistributedCache.addFileToClassPath(new Path("file:///home/ubuntu/libs/javacv-0.9.jar"), job);

Es posible que deba iterar sobre todos los archivos jar en ese directorio.