Apache Hive:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient。

5

我正在尝试安装Apache Hive,我将HIVE_HOME和HADOOP_HOME插入到hive_config.sh中,并将一些hive jar复制到$HADOOP_HOME/lib中。但是当我使用hive命令启动时,出现以下错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:346)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
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.main(RunJar.java:156)
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1412)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:62)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2453)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2465)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:340)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1410)
... 12 more
Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
NestedThrowables:
java.lang.reflect.InvocationTargetException
etc ...

任何帮助请!
6个回答

2

运行命令 "hive --service metastore &" 可以启动元数据存储。


1

1
无需启动元数据服务,因为在运行Hive CLI时会执行相同的操作,只需要确保您从实例化Hive元数据存储的相同目录执行Hive命令即可。

1
你的hadoop应该处于运行状态。解压下载的hive并赋予目录权限。转到hive/conf目录。将hive-env.sh.template文件更名为hive-env.sh,将hive-default.xml.template文件更名为hive-site.xml。打开hive-evn.sh,在hive-env.sh中设置JAVA_HOME和HADOOP_HOME,并设置hive路径。
export HIVE_HOME=/usr/local/hive

然后通过以下方式打开Hive终端:

hive

Hive默认采用Derby数据库,如果在创建表时出现元数据存储错误,请前往metastore/metastore_db并删除*.lck文件。

在.bashrc或.bash_profile中添加JAVA_HOME、HADOOP_HOME和HIVE_HOME。

$cd ~
$vi .bashrc

paste following to the end of the file



#Hadoop variables
export JAVA_HOME=/usr/lib/jvm/jdk/
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
###end of paste

1
非常感谢您的帮助,我的错误是我忘记将Hive的JAR文件添加到HADOOP_CLASSPATH中:export HADOOP_CLASSPATH=/home/elyes/Cassandra/apache-cassandra-2.0.6/lib/cassandra-driver-core-1.0.0-rc1-sources.jar:/home/elyes/hive/lib/*.jar - Elyes Frikha

0

从属性上来看,它仅会创建数据库而不是架构。请尝试在MySQL中创建Hive Metastore所需的模式。

cd $HIVE_HOME/scripts/metastore/upgrade/mysql/ <使用命令登录到mysql(mysql -u root -p),其中root是用户名,将要求输入密码>

mysql> use metastore;
 mysql> source hive-schema-<your_version>.mysql.sql;

例如源代码hive-schema-2.1.0.mysql.sql; 然后使用以下命令重新启动Hive Metastore进程:

(hive --service metastore) 希望这能解决问题!


0
如果您是CDH用户,应该使用正确的参数构建Zeppelin。这些参数将解决CDH 5.3.3的问题:
mvn clean install -Pspark-1.4 -Phadoop-2.4 -DskipTests -Dspark.version=1.4.0 -Dhadoop.version=2.5.0-cdh5.3.3 -Dhive.hive.version=0.13.1-cdh5.3.3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接