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

Ely*_*kha 5 java apache hadoop hive

我正在尝试安装 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 ...
Run Code Online (Sandbox Code Playgroud)

请提供任何帮助!

Kis*_*ore 1

您的 hadoop 应该处于运行状态。解压下载的配置单元并授予目录权限。进入 hive/conf 目录。将 hive-env.sh.template 文件制作为 hive-env.sh,将 hive-default.xml.template 文件制作为 hive-site.xml。打开 hive-evn.sh 并在 hive-env.sh 和 HADOOP_HOME 中设置 JAVA_HOME,并设置 hive 路径。

export HIVE_HOME=/usr/local/hive
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式打开配置单元终端

hive
Run Code Online (Sandbox Code Playgroud)

默认情况下,hive 采用 Derby 数据库,如果在创建表时出现 Metastore 错误,请转到 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
Run Code Online (Sandbox Code Playgroud)