JAVA _Home no está configurado en Hadoop

Soy un principiante con hadoop y trato de instalar y ejecutar hadoop en mi Ubuntu como un clúster de un solo nodo. Este es mi JAVA_HOME en mi hadoop_env.sh

# The java implementation to use. export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/ export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"} 

Pero cuando lo ejecuto vienen los siguientes errores.

 Starting namenodes on [localhost] localhost: Error: JAVA_HOME is not set and could not be found. localhost: Error: JAVA_HOME is not set and could not be found. Starting secondary namenodes [0.0.0.0] 0.0.0.0: Error: JAVA_HOME is not set and could not be found. 

¿Cómo elimino este error?

Depuré el código y descubrí que a pesar de que JAVA_HOME está configurado en el entorno, el valor se pierde porque las conexiones ssh a otros hosts se realizan dentro del código y la variable JAVA_HOME que se mostraba bien configurada en start-dfs.sh se desarmó en hadoop-env.sh.

La solución a este problema será establecer la variable JAVA_HOME en hadoop-env.sh y debería funcionar correctamente.

Tuve el mismo error y lo resolví con la observación de Soil Jain, pero para aclararlo un poco más: hadoop-env.sh usa una expresión como

 export JAVA_HOME=${JAVA_HOME} 

Si codificas la ruta de acceso a la instalación de JVM, funciona.

 export JAVA_HOME=/usr/lib/jvm/java... 

Esta resolución por variable ambiental como tal parece fallar. La encoding fija me solucionó el problema.

Bajo su directorio HADOOP_HOME / conf , actualice el archivo hadoop-env.sh . Tiene entrada para exportar JAVA_HOME.

La configuración de JAVA_HOME apropiado en este archivo debería resolver su problema.

¿Estás cargando hadoop_env.sh ? puede estar refiriéndose a hadoop-env.sh (guión en lugar de guión bajo – eso está bajo el directorio conf)

Por cierto, esta es una guía muy útil para una instalación rápida:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

Las respuestas anteriores deberían funcionar siempre que esté utilizando el directorio conf predeterminado $HADOOP_HOME/conf o $HADOOP_HOME/etc/hadoop . Aquí hay algunas cosas que debe hacer si está utilizando una carpeta conf diferente.

  1. Copie el archivo hadoop-env.sh del directorio conf predeterminado a su carpeta conf, por ejemplo /home/abc/hadoopConf .
  2. Reemplazar la linea

     #export JAVA_HOME=${JAVA_HOME} 

    con lo siguiente:

     export JAVA_HOME=/usr/lib/jvm/java-8-oracle export HADOOP_CONF_DIR=/home/abc/hadoopConf 

Cambia los valores apropiadamente. Si tiene otras variables de entorno relacionadas con hadoop configuradas en su .bashrc o .profile o .bash_profile considere agregarlas junto a las líneas anteriores.

Estoy usando hadoop 2.8.0. A pesar de que exporté JAVA_HOME (lo puse en .bashrc), todavía detecté este error al intentar ejecutar start-dfs.sh.

 user@host:/opt/hadoop-2.8.0 $ echo $JAVA_HOME  user@host:/opt/hadoop-2.8.0 $ $JAVA_HOME/bin/java -version java version "1.8.0_65" ... user@host:/opt/hadoop-2.8.0 $ sbin/start-dfs.sh ... Starting namenodes on [] localhost: Error: JAVA_HOME is not set and could not be found. localhost: Error: JAVA_HOME is not set and could not be found. 

La única forma en que podía hacer que se ejecutara era agregar JAVA_HOME = path_to_java a etc / hadoop / hadoop-env.sh y luego fuente:

 :/opt/hadoop-2.8.0 $ grep JAVA_HOME etc/hadoop/hadoop-env.sh #export JAVA_HOME=${JAVA_HOME} export JAVA_HOME=path_to_java user@host:/opt/hadoop-2.8.0 $ source etc/hadoop/hadoop-env.sh 

Tal vez eso (sourcing hadoop-env.sh) estaba implícito en las publicaciones anteriores. Solo pensé que alguien debería decirlo en voz alta. Ahora corre. He encontrado otros problemas (debido, sospecho, a los recursos limitados en el servidor que estoy usando), pero al menos superé este.

Primero, debe establecer JAVA_HOME en su hadoop_env.sh . (es probable que su JAVA_HOME local en .bashrc sea ignorado de alguna manera)

 # The java implementation to use. export JAVA_HOME=/usr/lib/jvm/default-java 

Luego, establezca el punto HADOOP_CONF_DIR en el directorio de su hadoop_env.sh . En ~ / .bashrc, agregue la siguiente línea:

 HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop" export HADOOP_CONF_DIR 

Donde /usr/local/hadoop/etc/hadoop es el directorio que contiene hadoop_env.sh

No se conoce el espacio entre Progtwig y Archivos: “Archivos de Progtwig”. Entonces, copio la carpeta de jdk a C: o carpeta que no contiene espacio en el nombre de la carpeta y asigno: export JAVA_HOME = Name_Path_Copied. Lo veo correr bien