Настройка JAVA HOME для Hadoop 3.0.3 при наличии нескольких версий Java
Я работаю над установкой Hadoop, сделанной кем-то другим.
Ubuntu 18.04.1 LTS
Hadoop version 3.0.3
Java open jdk 11 (auto mode) and 8 (manual mode)
В настоящее время Hadoop работает с Java 11, но я хочу настроить Hadoop для работы с Java 8, потому что Hive не работает с Java 11.
Ниже приведена конфигурация Java в моей виртуальной машине.
hadoop@hadoop-VirtualBox:~$ whereis java
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
hadoop@hadoop-VirtualBox:~$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
hadoop@hadoop-VirtualBox:~$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1, mixed mode)
hadoop@hadoop-VirtualBox:~$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
hadoop@hadoop-VirtualBox:~$ ls -lh /usr/lib/jvm/
total 8.0K
lrwxrwxrwx 1 root root 25 Apr 8 14:16 default-java -> java-1.11.0-openjdk-amd64
lrwxrwxrwx 1 root root 21 Apr 21 14:41 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
drwxr-xr-x 9 root root 4.0K Aug 23 12:28 java-11-openjdk-amd64
lrwxrwxrwx 1 root root 20 Apr 26 16:59 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
drwxr-xr-x 7 root root 4.0K Aug 17 08:24 java-8-openjdk-amd64
Я искал эту ветку для настройки Java, однако в файле.bashrc или / etc / environment нет записи в JAVA_HOME. JAVA_HOME указано только в файле /usr/local/hadoop/etc/hadoop/hadoop-env.sh. В файле JAVA_HOME указано следующее:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
С вышеуказанной конфигурацией Hadoop работает без проблем. Я попытался изменить JAVA_HOME в файле hadoop-env.sh на /usr/lib/jvm/java-8-openjdk-amd64 и попытался запустить Hadoop. Но это дает ошибку
Unrecognized option: --add-modules Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Я попытался изменить приоритет версии Java, используя альтернативы обновления sudo --config java вместе с изменением hadoop-env.sh, но все равно выдает ту же ошибку.
Чтобы изменить версию Java, мне нужно добавить путь к.bashrc и / etc / environment? Я хотел бы знать, что нужно изменить.
1 ответ
Сначала убедитесь, что у вас есть проверенная резервная копия.
Большая часть экосистемы hadoop поддерживает только Java 8. Scala, Spark и т. Д. Однако при установке Hadoop сначала необходимо установить JAVA_HOME.
Вам нужно будет удалить Java 11 перед установкой Java 8. Для системы Hadoop будет лучше получить сообщение об ошибке, чтобы помочь определить, где проблема, а не запускать различные JVM (Java 11 и Java 8). Примечание. Я предполагаю, что Hadoop запускается автоматически при запуске системы, поэтому вам обязательно нужно удалить Java 11.
Затем вам нужно будет пройти через каждый из файлов конфигурации Hadoop, чтобы дважды проверить, что JAVA_HOME не был настроен. Для Ubuntu это вообще /usr/local/hadoop/etc/hadoop
но может быть все что хотел предыдущий админ ($HADOOP_HOME/etc/hadoop
). Разброс целого напрямую ускорит это. Это относится к каждому дополнительному продукту, такому как Hive, HBase и т. Д. Вам может повезти в том, что только для hadoop-env.sh настроен JAVA_HOME.
Также проверьте сценарии запуска init в /etc/init.d
После перезагрузки Hadoop просмотрите файлы журналов. Я также отключил бы и перезапустил каждый сервис по одному и проверил вывод.