Ввод пуска - [ERROR] Инициализация терминала не удалась; возврат к неподдерживаемому
Я загрузил куст и изменил HADOOP_HOME на
HADOOP_HOME=${bin}/../../usr/local/hadoop
мой фактический путь hadoop
/usr/local/hadoop
в .bashrc я добавил следующие переменные env
export HIVE_HOME=/usr/lib/hive/apache-hive-1.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:/usr/local/Hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.
тогда я попытался запустить куст с помощью bin/hive. Я получил ошибку ниже
Logging initialized using configuration in jar:file:/usr/lib/hive/apache-hive-1.1.0-bin/lib/hive-common-1.1.0.jar!/hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/lib/hive/apache-hive-1.1.0-bin/lib/hive-jdbc-1.1.0-standalone.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.slf4j.impl.Log4jLoggerFactory]
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Ответы
Ответ 1
У меня была такая же проблема, и я получил эту работу по этой ссылке:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
- Hive обновлен до Jline2, но jline 0.9x существует в библиотеке Hadoop.
Итак, вы должны выполнить следующие шаги:
- Удалите jline из каталога Hadoop lib (он только переносится из ZooKeeper).
- export HADOOP_USER_CLASSPATH_FIRST = true
Ответ 2
Попробуйте удалить файл jline-0.9.94.jar по пути $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
Здесь ссылка на jira ticket
https://issues.apache.org/jira/browse/HIVE-8609
Ответ 3
Попробуйте удалить один из этих файлов
SLF4J: найдено привязку в [ jar: файл:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder. класс]
SLF4J: найдено привязку в [ jar: файл:/usr/lib/hive/apache-hive-1.1.0-bin/lib/hive-jdbc-1.1.0-standalone.jar!/org/SLF4J/осущ/StaticLoggerBinder.class]
тогда я думаю, что он будет только привязываться к одному. поэтому множественное связывание больше не будет доступно
Ответ 4
Я просто установил
HADOOP_USER_CLASSPATH_FIRST=true
и он работает для меня для этой проблемы.
Ответ 5
У меня была та же проблема с cloudera CDH5.4. Удаление jline-0.9.94.jar из папки пряжи /libs работало для меня.
Ответ 6
Сделайте это locate jline
.
Файл jline-0.9.94.jar находится в трех местах, удаляет его из всех трех местоположений и выполняет необходимый экспорт:
$ export HADOOP_USER_CLASSPATH_FIRST=true
Ответ 7
С версией Hadoop 2.4.1 и Hive 1.2.0. Я была такая же проблема. И после установки HADOOP_USER_CLASSPATH_FIRST = true в .bashrc
Он работал как шарм!!!
Ответ 8
проверить эту ссылку, это может помочь вам Облицовка проблемы при запуске улья из командной строки
Ответ 9
С новой версией Hive (1.2.1) мне просто пришлось заменить jline-2.12.jar на jline-2.13.jar в папке установки/lib.
Ответ 10
Вы должны запустить библиотеку хаоса:
$ vi ~/.bashrc
$ export HADOOP_USER_CLASSPATH_FIRST=true
$ source .bashrc
$ hive
Ответ 11
Я переименовал
addJava "-Djline.terminal=jline.UnixTerminal"
to
addJava "-Djline.terminal=jline2.UnixTerminal"
в файле "активатор"