失败:元数据错误:java.lang.RuntimeException: 无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient。

3

在HDFS和Hive实例正在运行时,我关闭了我的HDFS客户端。现在当我重新登录Hive时,我无法执行任何DDL任务,例如“show tables”或“describe tablename”等。它给出以下错误:

ERROR exec.Task (SessionState.java:printError(401)) - FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

有人可以建议我如何在不重新创建表的情况下实例化我的metastore_db吗?否则,我必须再次复制创建整个数据库/模式的工作。

8个回答

10

我已经解决了这个问题。以下是我采取的步骤:

  1. 进入 $HIVE_HOME/bin/metastore_db
  2. 将 db.lck 复制到 db.lck1,dbex.lck 复制到 dbex.lck1
  3. 从 db.lck 和 dbex.lck 中删除锁定条目
  4. 退出 hive shell 以及所有正在运行的 HDFS 实例
  5. 重新登录 HDFS 和 hive shell。如果运行 DDL 命令,可能会再次出现 "Could not instantiate HiveMetaStoreClient error" 错误
  6. 现在将 db.lck1 复制回 db.lck,将 dbex.lck1 复制回 dbex.lck
  7. 退出所有 hive shell 和 HDFS 实例
  8. 重新登录,您应该能够看到您的旧表

注意:第5步可能看起来有点奇怪,因为即使删除了锁定条目,它仍然会给出 "HiveMetaStoreClient 错误",但对我有效。

优点:您不必重复创建整个数据库的工作。

希望这能帮助那些遇到相同错误的人。如果你觉得有用,请投票支持。谢谢。


当我使用Hive命令提示符时,无法连接MySQL数据库。请告诉我哪里做错了... 我尝试连接时出现相同的异常。 "在元数据中失败-错误-Java-lang-RuntimeException无法实例化-org"。如果您想要特定的文件,则我会分享它们。 - Shyam Gupta

9

我被告知,通常情况下,如果我们没有正确终止Hive控制台,就会出现这个异常。

解决方法:

运行jps命令,查找“RunJar”进程,并使用kill -9命令将其杀死。


1
例如,我使用MySQL来保存元数据数据库,我将mysql-connector-java-5.1.22-bin.jar复制到$HIVE_HOME/lib文件夹中。我的错误已经解决。

1

我曾经遇到同样的问题,并通过启动元数据服务来解决它。有时候,如果您的计算机重新启动或关闭,服务可能会停止。您可以通过运行以下命令来启动服务:

登录为$HIVE_USER

nohup hive --service metastore>$HIVE_LOG_DIR/hive.out 2>$HIVE_LOG_DIR/hive.log & 

1

我在hive服务器上遇到了类似的问题,按照以下步骤解决:
1. 进入 $HIVE_HOME/bin/metastore_db 目录
2. 将 db.lck 复制为 db.lck1,将 dbex.lck 复制为 dbex.lck1
3. 从 db.lck 和 dbex.lck 中删除锁定条目
4. 重新登录hive shell。现在可以正常使用了。
谢谢


1

请看:在hive中出现错误

您是否将包含元数据数据库的JDBC驱动程序的jar文件复制到Hive的lib目录中?

例如,如果您正在使用MySQL来保存元数据数据库,则需要将mysql-connector-java-5.1.22-bin.jar复制到$HIVE_HOME/lib中。

这对我解决了同样的错误。


0

我曾经遇到过这个问题,而且是在命令行运行hive命令时出现的。

由于我正在使用Kerberized Hive,所以通过运行kinit命令来解决了这个问题。

kinit -kt <your keytab file location> <kerberos principal>

0

我也遇到了同样的问题,后来发现我同时拥有hive-deafult.xml和由我手动创建的hive-site.xml文件。

我将我的hive-site.xml移动到hive-site.xml-template中(因为我不需要这个文件),然后启动hive,一切正常。

祝好, Ajmal


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