JAVA_HOME не устанавливается - PullRequest
8 голосов
/ 08 февраля 2012

Во время работы над реализацией Hadoop в псевдораспределенной операции я обнаружил следующее исключение: переменная JAVA_HOME не установлена, но когда я попытался отразить ее, она была установлена.

Переменная предустановлена ​​в conf/hadoop-env.sh (отредактировано export JAVA_HOME=/usr/lib/jvm/java-6-sun), bash.bashrc.

vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ echo $JAVA_HOME
/usr/lib/jvm/java-6-sun
vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ bin/start-all.sh
starting namenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-namenode-vardan-HP-G62-Notebook-PC.out
localhost: starting datanode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-datanode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
localhost: starting secondarynamenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-secondarynamenode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
starting jobtracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-jobtracker-vardan-HP-G62-Notebook-PC.out 
localhost: starting tasktracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-tasktracker-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set.

Ответы [ 9 ]

4 голосов
/ 28 мая 2012

Я просто добавил в ./conf/hadoop-env.sh эту строку:

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/latest

и это помогло

3 голосов
/ 08 февраля 2012

Переменная JAVA_HOME, которую вы установили с помощью set JAVA_HOME=, относится только к текущей оболочке.Учитывая, что вы запускаете новую оболочку при выполнении bin/start-all.sh, вам необходимо «экспортировать» переменную среды, чтобы сделать ее доступной в глобальной области видимости:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
3 голосов
/ 08 февраля 2012

Проверьте, не отменяет ли bin/start-all.sh JAVA_HOME

Может быть, поместить echo $JAVA_HOME в этот скрипт прямо перед выполнением этих двоичных файлов?

1 голос
/ 29 мая 2012

Установка Java 1.6.x

  1. Скачать "jdk-6u32-linux-i586.bin"
  2. sh jdk-6u32-linux-i586.bin

  3. mv / etc / alternatives / java / etc / alternatives / java_bak mv / etc / alternatives / javac / etc / alternatives / javac_bak

  4. создать ссылку ln -s /opt/jdk1.6.0_32/bin/java / etc / alternatives / java ln -s /opt/jdk1.6.0_32/bin/javac / etc / alternatives / javac

5. Java-версия

----------- это надо видеть -------------------------------- Java-версия "1.6.0_32" Java (TM) SE Runtime Environment (сборка 1.6.0_32-b05)

Клиентская виртуальная машина Java HotSpot (TM) (сборка 20.7-b02, смешанный режим, совместное использование)

0 голосов
/ 03 апреля 2015

Возможно, вам необходимо проверить конфигурацию $ JAVA_HOME, как показано ниже:
1. для hadoop-1.x: hadoop-home-path / conf / hadoop-env.sh
2. для hadoop-2.x: hadoop-home-path / etc / hadoop / hadoop-env.sh

0 голосов
/ 11 ноября 2014

Вы можете добавить в свой .bashrc файл:

export JAVA_HOME = $ (readlink -f / usr / bin / java | sed "s: bin / java ::")

и он будет динамически меняться при обновлении пакетов и использовании Hadoop.

0 голосов
/ 25 марта 2014

Проблема состоит в том, что сценарии, которые инициализируют демоны dfs и mapreduce, не имеют JAVA_HOME, определенного в его среде.

Вероятно, при выполнении HDFS и MapReduce его среда выполнения является той, которая указана сценарием $ HADOOP_HOME/conf/hadoop-env.sh.Следовательно, было бы достаточно определить JAVA_HOME в $ HADOOP_HOME / conf / hadoop-env.sh:

export JAVA_HOME=jdk-home-path

В противном случае, если этого недостаточно, проблема может заключаться в том, что используется среда конфигурации(hadoop-env.sh) не тот, которого мы ожидаем;hadoop выбирает другое или значение по умолчанию, если ничего не найдено.Самым быстрым решением будет определение каталога conf, в котором находится скрипт hadoop-env.sh.Установка переменной среды HADOOP_CONF_DIR будет достаточной:

export HADOOP_CONF_DIR=hadoop-home-path/conf
0 голосов
/ 09 мая 2013

та же проблема на Ubuntu Precise + CDH4 ...

Короче говоря, CDH4 использует bigtop, и самый простой способ установить JAVA_HOME - это отредактировать файл / etc / default / bigtop-utils, например:

export JAVA_HOME = / usr / lib / jvm / jdk1.6.0_43 / jre /

Примечание: я не смог найти файл hadoop-env.sh после правильной установки CDH4.

0 голосов
/ 08 февраля 2012

Вы можете попытаться записать в свой файл .bash_profile "JAVA_HOME = / usr / lib / jvm / java-6-sun", когда вы входите в систему с помощью консоли, либо физически на компьютере, либо с помощью ssh, выполняется .bash_profile ., .bashrc открыт, когда вы запускаете / bin / bash или другой терминал

Вы также можете попробовать написать это внутри start-all.sh

убедитесь, что JAVA_HOME имеет правильный путь

...