Подтвердить что ты не робот

Работа с Hadoop: localhost: Ошибка: JAVA_HOME не задан

Я работаю с Ubuntu 12.04 LTS.

Я прохожу через руководство quickstart из хаупов, чтобы выполнить псевдораспределение. Это кажется простым и простым (легко!).

Однако, когда я пытаюсь запустить start-all.sh, я получаю:

localhost: Error: JAVA_HOME is not set.

Я прочитал все другие рекомендации по stackoverflow для этой проблемы и сделал следующее, чтобы установить JAVA_HOME:

В /etc/hadoop/conf/hadoop-env.sh я установил

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

В /etc/bash.bashrc я установил

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

which java возвращает:

/usr/bin/java

java –version работает

echo $JAVA_HOME возвращает:

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

Я даже пытался стать root и явно писать в терминале:

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

Если бы вы могли показать мне, как решить эту ошибку, мы будем очень благодарны. Я думаю, что мой JAVA_HOME как-то переопределяется. Если это так, не могли бы вы объяснить мне, как сделать мой экспорт глобальным?

4b9b3361

Ответ 1

Я использую hadoop 1.1, и столкнулся с той же проблемой.

Я решил это путем изменения переменной JAVA_HOME в /etc/hadoop/hadoop-env.sh как:

export JAVA_HOME=/usr/lib/jvm/<jdk folder>

Ответ 2

Способом решения этой проблемы является экспорт переменной JAVA_HOME в файл conf/hadoop-env.sh.

Неважно, если вы уже экспортировали эту переменную в ~/.bashrc, она все равно покажет ошибку.

Итак, отредактируйте conf/hadoop-env.sh и раскомментируйте строку "экспортировать JAVA_HOME" и добавьте к ней правильный путь к файловой системе, то есть путь к Java JDK.

# Реализация Java для использования. Обязательный параметр.
 экспорт JAVA_HOME = "/path/to/java/JDK/"

Ответ 3

Способ отладки заключается в том, чтобы поставить "echo $JAVA_HOME" в start-all.sh. Вы используете свою среду hadoop под другим именем пользователя или как себя? Если первое, очень вероятно, что переменная среды JAVA_HOME не установлена ​​для этого пользователя.

Другая потенциальная проблема заключается в том, что вы неправильно указали JAVA_HOME, а предоставленное вами значение не указывает на JDK/JRE. Обратите внимание, что "java" и "java -version" будут работать, даже если JAVA_HOME установлен неверно.

Ответ 4

извлечение из etc/hadoop/hadoop-env.sh

Единственной требуемой переменной среды является JAVA_HOME. Все остальные  необязательный. При работе с распределенной конфигурацией лучше всего  установите JAVA_HOME в этот файл, чтобы он был правильно определен на удаленных узлов.

Это означает, что лучше и рекомендуется установить JAVA_HOME здесь.. хотя существующее определение читает переменную JAVA_HOME. Возможно, он не получил значение JAVA_HOME от ранее установленного значения... стандартное руководство Apache не говорит об этом:(: (

Ответ 5

Эта ошибка исходит от строки 180

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

в libexec/hadoop-config.sh.

Попробуйте echo $JAVA_HOME в этом script. Если он не распознает,

Найдите JAVA_HOME, используя следующую команду:

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

и замените строку

export JAVA_HOME=${JAVA_HOME} в /etc/hadoop/hadoop-env.sh с JAVA_HOME вы получили команду сверху.

Ответ 6

Я также столкнулся с аналогичной проблемой в hadoop 1.1 Я не заметил, что JAVA_HOME прокомментирован в: hadoop/conf/hadoop-env.sh

Это было

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

Пришлось изменить его на

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

Ответ 7

независимо от дебианского или любого вкуса linux, просто знайте, что ~/.bash_profile принадлежит определенному пользователю и не является системным. в псевдораспределенной среде hasoop работает на localhost, поэтому $JAVA_HOME в .bash_profile больше не используется.

просто экспортируйте JAVA_HOME в ~/.bashrc и используйте его в системной области.

Ответ 8

Столкнулся с тем же вопросом на Ubuntu LTS 16.04. Запуск bash -vx./bin/hadoop показал, что он проверял, является ли java каталогом. Поэтому я изменил JAVA_HOME на папку, и это сработало.

++ [[ ! -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.

Поэтому я изменил JAVA_HOME в ./etc/hadoop/hadoop-env.sh на

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

и hadoop начинается нормально. Это также упоминается в этой статье.

Ответ 9

Проверьте, соответствуют ли ваши альтернативы правильному, вы можете фактически указывать на другую версию и пытаться изменить hasoop-env.sh на другой установленной версии.

-alternatives --install/etc/hadoop/conf [generic_name] [ваш правильный путь] приоритет {для дальнейшей проверки справочной страницы альтернатив}

для установки альтернатив вручную,

alternatives --set [generic name] [ваш текущий путь].

Ответ 10

Измените переменную JAVA_HOME в conf/hadoop-env.sh

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

Ответ 11

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

Примечание. Не используйте export JAVA_HOME=${JAVA_HOME}!