Hadoop 2.2.0 не запускает start-dfs.sh с ошибкой: JAVA_HOME не установлен и не может быть найден
У меня есть работа над установкой Hadoop в Ubuntu 12.x. У меня уже был пользователь deploy
, который я планирую использовать для запуска hadoop в кластере машин. Следующий код демонстрирует мою проблему, в основном я могу ssh olympus
без проблем, но start-dfs.sh
не выполняет именно это:
[email protected]:~$ ssh olympus
Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.5.0-45-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Mon Feb 3 18:22:27 2014 from olympus
[email protected]:~$ echo $JAVA_HOME
/opt/dev/java/1.7.0_51
[email protected]:~$ start-dfs.sh
Starting namenodes on [olympus]
olympus: Error: JAVA_HOME is not set and could not be found.
Ответы
Ответ 1
Вы можете отредактировать файл hadoop-env.sh и установить JAVA_HOME для Hadoop
Откройте файл и найдите строку ниже:
export JAVA_HOME=/usr/lib/j2sdk1.6-sun
Раскомментировать строку И обновить java_home в соответствии с вашей средой
Это решит проблему с java_home.
Ответ 2
Незначительная ошибка на Ubuntu. Текущая строка
export JAVA_HOME=${JAVA_HOME}
в/etc/hadoop/hadoop-env.sh должен забрать java-сайт с хоста, но он этого не делает.
Просто отредактируйте файл и жесткий код java-сайта на данный момент.
Ответ 3
Отредактируйте запуск Hadoop script /etc/hadoop/hadoop-env.sh
, установив JAVA_PATH
явно.
Например:
Вместо export JAVA_HOME=${JAVA_HOME}
, do
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
Это версия Java, java-1.8.0-openjdk.
Ответ 4
У меня hasoop установлен на /opt/hadoop/
, а java установлен в /usr/lib/jvm/java-8-oracle
В конце, добавив это в файлы профиля bash, я решил любую проблему.
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_ROOT_LOGGERi=INFO,console
export HADOOP_SECURITY_LOGGER=INFO,NullAppender
export HDFS_AUDIT_LOGGER=INFO,NullAppender
export HADOOP_INSTALL=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_YARN_HOME=$HADOOP_HOME
export YARN_LOG_DIR=/tmp
Ответ 5
В качестве альтернативы вы можете отредактировать /etc/environment
, чтобы включить:
JAVA_HOME=/usr/lib/jvm/[YOURJAVADIRECTORY]
Это делает доступным JAVA_HOME
для всех пользователей в системе и позволяет start-dfs.sh
видеть это значение. Я предполагаю, что start-dfs.sh
запускает процесс как другой пользователь где-то, который не подбирает переменную, если явно не установлен в hadoop-env.sh
.
Использование hadoop-env.sh
возможно более ясное - просто добавив эту опцию для полноты.