web-dev-qa-db-ja.com

Hiveの起動-[エラー]端末の初期化に失敗しました。サポートされていない状態へのフォールバック

Hiveをダウンロードし、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を使用して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)
23
Venkat

私は同じ問題を抱えていて、このリンクから機能しました:

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

  • HiveはJline2にアップグレードされましたが、jline 0.9xはHadoopライブラリに存在します。

したがって、次の手順に従う必要があります。

  1. Hadoop libディレクトリからjlineを削除します(ZooKeeperから推移的に取り込まれるだけです)。
  2. エクスポートHADOOP_USER_CLASSPATH_FIRST = true
64
Rodrigo Salvo

パス$ HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jarの下のjline-0.9.94.jarファイルを削除してから試してください。

Jiraチケットへのリンクはこちら https://issues.Apache.org/jira/browse/Hive-8609

8
uday sharma

設定するだけです

HADOOP_USER_CLASSPATH_FIRST=true

そして、この問題に対して私にとってはうまくいきます。

5
krish727

このファイルのいずれかを削除してみてください

SLF4J:[jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/ org/slf4j/implにバインディングが見つかりました/StaticLoggerBinder.class]

SLF4J:[jar:file:/usr/lib/Hive/Apache-Hive-1.1.0-bin/lib/Hive-jdbc-1.1.0-standalone.jarでバインディングが見つかりました! /org/slf4j/impl/StaticLoggerBinder.class]

次に、1つにバインドすることのみを選択すると思います。したがって、複数のバインディングは使用できなくなります

4
Mund

Hadoopバージョン2.4.1およびHive 1.2.0を使用。同じ問題がありました。 .bashrcでHADOOP_USER_CLASSPATH_FIRST = trueを設定した後

それは魅力のように働いた!!!

1
Mohammed Asad

Cloudera CDH5.4でも同じ問題が発生しました。 yarn/libsフォルダーからjline-0.9.94.jarを削除するとうまくいきました。

1
raja

これを行う locate jline

ファイルjline-0.9.94.jarは3つの場所にあり、3つの場所すべてから削除して、必要なエクスポートを実行します。

$ export HADOOP_USER_CLASSPATH_FIRST=true
1
Divas

Hadoopライブラリを初期化する必要があります。

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

Hive(1.2.1)の新しいバージョンでは、installation/libフォルダーのjline-2.12.jarをjline-2.13.jarに置き換えるだけでした。

0
mountrix

名前を変更しました

addJava "-Djline.terminal=jline.UnixTerminal"

addJava "-Djline.terminal=jline2.UnixTerminal"

「アクティベーター」ファイル内

0
raoulsson

このリンクを確認すると役立つ場合があります CLIからHiveを実行中に問題に直面しています

0
Qasim