webentwicklung-frage-antwort-db.com.de

Hive-Start - [ERROR] Terminal-Initialisierung fehlgeschlagen; Rückfall auf nicht unterstützt

Ich habe Hive heruntergeladen und HADOOP_HOME in geändert

HADOOP_HOME=${bin}/../../usr/local/hadoop

mein eigentlicher Hadoop-Pfad ist 

/usr/local/hadoop

in .bashrc habe ich die folgenden env-variablen hinzugefügt 

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/*:.

dann habe ich versucht, hive mit bin/hive zu starten. Ich habe den untenstehenden Fehler erhalten

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)
22
Venkat

Ich hatte das gleiche Problem und habe es mit diesem Link zum Laufen gebracht: 

https://cwiki.Apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

  • Hive hat ein Upgrade auf Jline2 durchgeführt, aber Jline 0.9x ist in der Hadoop-Bibliothek vorhanden.

So sollten Sie diese Schritte befolgen:

  1. Löschen Sie jline aus dem Hadoop-lib-Verzeichnis (es wird nur transitiv aus ZooKeeper abgerufen).
  2. export HADOOP_USER_CLASSPATH_FIRST = true
63
Rodrigo Salvo

Versuchen Sie nach dem Entfernen der Datei jline-0.9.94.jar unter dem Pfad $ HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar 

Hier ist der Link zu jira ticket https://issues.Apache.org/jira/browse/Hive-8609

8
uday sharma

Ich habe gerade das eingestellt 

HADOOP_USER_CLASSPATH_FIRST=true

und es funktioniert für mich in dieser Ausgabe.

5
krish727

Versuchen Sie, eine dieser Dateien zu löschen

SLF4J: Bindung gefunden in [ jar: file: /usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar! /Org/slf4j/impl/StaticLoggerBinder.class ]

SLF4J: Bindung gefunden 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 ]

dann denke ich, dass es sich nur für eine Bindung entscheiden wird. Mehrfachbindung ist daher nicht mehr verfügbar

4
Mund

Mit Hadoop Version 2.4.1 und Hive 1.2.0. Ich hatte das gleiche Problem. Und nach dem Setzen von HADOOP_USER_CLASSPATH_FIRST = true in .bashrc

Es hat wie ein Zauber funktioniert !!!

1
Mohammed Asad

Ich hatte das gleiche Problem mit Cloudera CDH5.4. Das Entfernen von jline-0.9.94.jar aus dem Ordner "arn/libs "hat für mich funktioniert.

1
raja

Tun Sie dies locate jline.

Die Datei jline-0.9.94.jar befindet sich an 3 Speicherorten, löscht sie von allen 3 Speicherorten und führt den erforderlichen Export aus:

$ export HADOOP_USER_CLASSPATH_FIRST=true
1
Divas

Sie sollten die Hadoop-Bibliothek initiieren:

$ vi ~/.bashrc
$ export HADOOP_USER_CLASSPATH_FIRST=true
$ source .bashrc
$ Hive
0
KARTHIKEYAN.A

Mit der neuen Version von Hive (1.2.1) musste ich einfach jline-2.12.jar durch jline-2.13.jar im Installationsordner/lib ersetzen.

0
mountrix

Ich habe umbenannt 

addJava "-Djline.terminal=jline.UnixTerminal" 

zu 

addJava "-Djline.terminal=jline2.UnixTerminal"

in der "Aktivator" -Datei

0
raoulsson

Überprüfen Sie diesen Link, es könnte Ihnen helfen Probleme beim Ausführen von Hive über die CLI

0
Qasim