Hive启动异常解决(一)

平时用的Hive的时候,总是坚挺的活着,今天竟然莫名其妙的就死给我看

shell>hive

 

 

 

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org

.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)
        at org
.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)
        at org
.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
        at sun
.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java
.lang.reflect.Method.invoke(Method.java:597)
        at org
.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org
.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java
.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.

SessionHiveMetaStoreClient

上述异常信息来自于:https://blog.csdn.net/freedomboy319/article/details/44828337

 

在CSDN上有很多大牛的博客都提到了这个问题,总结原因是hive版本高导致的,然后我有下载了apache-hive-1.2.2-bin.tar.gz

在安装的过程中又遇到了

[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 org.apache.hive.beeline.BeeLineOpts.(BeeLineOpts.java:74)
 at org.apache.hive.beeline.BeeLine.(BeeLine.java:117)
 at org.apache.hive.beeline.HiveSchemaTool.runBeeLine(HiveSchemaTool.java:346)
 at org.apache.hive.beeline.HiveSchemaTool.runBeeLine(HiveSchemaTool.java:326)
 at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:266)
 at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)
 at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 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 org.apache.hive.beeline.BeeLineOpts.(BeeLineOpts.java:102)
 at org.apache.hive.beeline.BeeLine.(BeeLine.java:117)
 at org.apache.hive.beeline.HiveSchemaTool.runBeeLine(HiveSchemaTool.java:346)
 at org.apache.hive.beeline.HiveSchemaTool.runBeeLine(HiveSchemaTool.java:326)
 at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:266)
 at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)
 at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
 at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

 

公司大佬说是Hadoop里存在老版本的jline,将hive里的jline-2.12.jar拷过去就行了

[root@node01 ~]# cd /opt/hive/lib/

[root@node01 lib]# cp jline-2.12.jar /opt/hadoop/share/hadoop/yarn/lib

复制过去之后,初始化元数据

[root@node01 ~]# schematool -initSchema -dbType mysql
Metastore connection URL:  jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver :  com.mysql.jdbc.Driver
Metastore connection User:  root
Starting metastore schema initialization to 1.2.0
Initialization script hive-schema-1.2.0.mysql.sql
Initialization script completed
schemaTool completed
[root@node01 ~]# hive

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> quit;

 

如果初始化元数据还是报相同的错误,则删除/opt/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar 的 jline-0.9.94.jar 文件

再重新初始化元数据信息,应该就妥妥的了

注:如有侵权,请联系删除

 

你可能感兴趣的:(hive)