Ошибка при установке Hive 2.1.0 на Hadoop 2.7.2 - псевдораспределенный режим
Я следовал ссылкам по установке Apache Hadoop и мог установить их вместе с PIG. Все они работают нормально.
Ниже приведена конфигурация: Hadoop: 2.7.2 Hive: 2.1.0 Машина: Ubuntu 14.04 LTS 64-bit Java: версия 9
Теперь я попытался установить Apache Hive 2.1.0 по этой ссылке [ https://cwiki.apache.org/confluence/display/Hive/AdminManual+Installation.
... и начал тестовое выполнение Hive CLI, но каждый раз выдает следующую ошибку и завершает работу.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" java.lang.ClassCastException: jdk.internal.loader.ClassLoaders$AppClassLoader (in module: java.base) cannot be cast to java.net.URLClassLoader (in module: java.base)
at org.apache.hadoop.hive.ql.session.SessionState.<init> (SessionState.java:374)
at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:350)
at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:60)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:663)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-ea/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@9-ea/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-ea/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@9-ea/Method.java:533)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
..Но есть загвоздка Если я вызываю Билайн CLI, то он работает нормально.
Не могли бы вы помочь: а. Являются ли Beeline CLI и Hive CLI одинаковыми или есть какая-то конкретная разница? б. Помогите установить / настроить Hive на мою машину
1 ответ
A: Beeline CLI VS Hive CLI https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.4.2/bk_dataintegration/content/beeline-vs-hive-cli.html
B: Согласно: http://openjdk.java.net/projects/jigsaw/talks/prepare-for-jdk9-j1-2015.pdf
Java 9 Uses больше не использует java.net.URLClassLoader.
Тем не менее, я смог решить эту проблему, указав Hive на JDK8.
** Я только начал использовать HIVE/HADOOP... Возможно, кто-то мог бы найти лучшее объяснение или обходной путь, чтобы мы могли использовать JDK9...