tutorial setup multinodo make instalar how for español dummies configurar como comandos cluster bash hadoop ubuntu-12.04 java-home

bash - setup - how to make cluster in hadoop



Trabajando con Hadoop: localhost: Error: JAVA_HOME no está configurado (11)

Estoy trabajando con Ubuntu 12.04 LTS.

Repaso el manual de inicio rápido de hadoop para hacer una operación pseudo distribuida. Parece simple y directo (¡fácil!).

Sin embargo, cuando intento ejecutar start-all.sh obtengo:

localhost: Error: JAVA_HOME is not set.

He leído todos los otros consejos sobre stackoverflow para este problema y he hecho lo siguiente para asegurarme de que JAVA_HOME esté configurado:

En /etc/hadoop/conf/hadoop-env.sh , he establecido

JAVA_HOME=/usr/lib/jvm/java-6-oracle export JAVA_HOME

En /etc/bash.bashrc , he establecido

JAVA_HOME=/usr/lib/jvm/java-6-oracle export JAVA_HOME PATH=$PATH:$JAVA_HOME/bin export PATH

which java devuelve:

/usr/bin/java

java –version works

echo $JAVA_HOME devuelve:

/usr/lib/jvm/java-6-oracle

Incluso he tratado de convertirme en root y escribir explícitamente en la terminal:

$ JAVA_HOME=/usr/lib/jvm/java-6-oracle $ export JAVA_HOME $ start-all.sh

Si pudiera mostrarme cómo resolver este error, sería muy apreciado. Estoy pensando que mi JAVA_HOME está siendo anulado de alguna manera. Si ese es el caso, ¿podría explicarme cómo hacer que mis exportaciones sean globales?


Cambie la variable JAVA_HOME en conf/hadoop-env.sh

export JAVA_HOME=/etc/local/java/<jdk folder>


Compruebe si sus alternativas apuntan a la correcta, en realidad podría estar apuntando a una versión diferente e intentando alterar el hadoop-env.sh en otra versión instalada.

-alternatives --install / etc / hadoop / conf [generic_name] [su ruta de acceso correcta] prioridad {para ver más página de manual de alternativas}

para establecer alternativas manualmente,

alternativas --set [nombre genérico] [su ruta actual].


Este error viene de la línea 180

if [[ -z $JAVA_HOME ]]; then echo "Error: JAVA_HOME is not set and could not be found." 1>&2 exit 1 fi

en libexec/hadoop-config.sh .

Pruebe echo $JAVA_HOME en ese script. Si no reconoce,

Encuentra tu JAVA_HOME usando esto:

$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

y reemplaza la linea

export JAVA_HOME=${JAVA_HOME} en /etc/hadoop/hadoop-env.sh con JAVA_HOME que /etc/hadoop/hadoop-env.sh del comando anterior.


Estoy usando hadoop 1.1, también me enfrenté a este problema.

Cambié la variable JAVA_HOME en conf / hadoop-env.sh

export JAVA_HOME=/etc/local/java/<jdk folder>

ahora funciona


Independientemente de Debian o cualquier sabor de Linux, solo ~/.bash_profile saber que ~/.bash_profile pertenece a un usuario específico y no abarca todo el sistema. en un entorno pseudo-distribuido, hadoop funciona en localhost por lo que $JAVA_HOME en .bash_profile ya no sirve.

solo exporte JAVA_HOME en ~/.bashrc y ~/.bashrc todo el sistema.


La forma de depurar esto es poner un "echo $ JAVA_HOME" en start-all.sh. ¿Estás ejecutando tu entorno de hadoop con un nombre de usuario diferente o como tú mismo? Si es lo primero, es muy probable que la variable de entorno JAVA_HOME no esté configurada para ese usuario.

El otro problema potencial es que ha especificado JAVA_HOME incorrectamente, y el valor que ha proporcionado no apunta a un JDK / JRE. Tenga en cuenta que "which java" y "java -version" funcionarán, incluso si JAVA_HOME está configurado incorrectamente.


La forma de resolver este problema es exportar la variable JAVA_HOME dentro del archivo conf / hadoop-env.sh.

No importa si ya exportó esa variable en ~ / .bashrc, aún mostrará el error.

Por lo tanto, edite conf / hadoop-env.sh y elimine el comentario de la línea "export JAVA_HOME" y agregue una ruta adecuada al sistema de archivos, es decir, la ruta a su Java JDK.

# La implementación de Java a usar. Necesario.
exportar JAVA_HOME = "/ ruta / a / java / JDK /"


Se encontró con el mismo problema en ubuntu LTS 16.04. La ejecución de bash -vx ./bin/hadoop mostró que probaba si java era un directorio. Así que cambié JAVA_HOME a una carpeta y funcionó.

++ [[ ! -d /usr/bin/java ]] ++ hadoop_error ''ERROR: JAVA_HOME /usr/bin/java does not exist.'' ++ echo ''ERROR: JAVA_HOME /usr/bin/java does not exist.'' ERROR: JAVA_HOME /usr/bin/java does not exist.

Así que cambié JAVA_HOME en ./etc/hadoop/hadoop-env.sh para

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/

y hadoop comienza bien. Esto también se menciona en este article .


También me he enfrentado al problema similar en hadoop 1.1. No había notado que JAVA_HOME se comentó en: hadoop/conf/hadoop-env.sh

Era

/#JAVA_HOME=/usr/lib/jvm/java-6-oracle

Tuve que cambiarlo a

JAVA_HOME=/usr/lib/jvm/java-6-oracle


extracto de etc / hadoop / hadoop-env.sh

La única variable de entorno requerida es JAVA_HOME. Todos los demás son opcionales. Cuando se ejecuta una configuración distribuida, es mejor configurar JAVA_HOME en este archivo, para que esté correctamente definido en los nodos remotos.

Esto significa que es mejor y se recomienda establecer JAVA_HOME aquí ... aunque la definición existente lea la variable JAVA_HOME. Tal vez no obtenga el valor de JAVA_HOME del valor establecido previamente ... el manual estándar de apache no dice esto :( :(


echo "export JAVA_HOME=/usr/lib/java" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

Aviso: No use export JAVA_HOME=${JAVA_HOME} !