3

当 HDFS 和 hive 实例正在运行时,我关闭了我的 HDFS 客户端。现在,当我重新登录 Hive 时,我无法执行任何 DDL 任务,例如“显示表”或“描述表名”等。它给了我如下错误

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 吗?否则,我必须再次重复创建整个数据库/模式的工作。

4

8 回答 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 命令,它可能会再次给您“无法实例化 HiveMetaStoreClient 错误”
  6. 现在将 db.lck1 复制回 db.lck 并将 dbex.lck1 复制回 dbex.lck
  7. 从所有 hive shell 和 HDFS 实例中注销
  8. 重新登录,你应该看到你的旧表

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

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

希望这可以帮助面临同样错误的人。如果您觉得有用,请投票。提前谢谢

于 2013-04-22T19:46:44.243 回答
9

有人告诉我,如果我们的 hive 控制台没有正确终止,通常我们会得到这个异常。修复:

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

于 2013-07-16T04:44:57.620 回答
1

我遇到了同样的问题并通过启动 Metastore 服务解决了它。如果您的机器重新启动或出现故障,有时服务可能会停止。您可以通过运行以下命令来启动服务:

登录为$HIVE_USER

nohup hive --service metastore>$HIVE_LOG_DIR/hive.out 2>$HIVE_LOG_DIR/hive.log & 
于 2013-09-27T10:18:43.137 回答
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 重新登录。它正在工作
谢谢

于 2013-10-29T06:32:27.967 回答
1

请参阅:在蜂巢中出现错误

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

例如,如果您使用 MySQL 来保存元数据数据库,则需要复制

mysql-connector-java-5.1.22-bin.jar 到 $HIVE_HOME/lib。

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

于 2013-08-28T22:10:33.033 回答
1

例如,我使用 MySQL 来保存元数据数据库,我复制了

mysql-connector-java-5.1.22-bin.jar 到 $HIVE_HOME/lib 文件夹

我的错误已解决

于 2015-12-04T09:08:19.943 回答
0

I also was facing the same problem, and figured out that I had both hive-deafult.xml and hive-site.xml(created manually by me),

I moved my hive-site.xml to hive-site.xml-template(as I was not needed this file) then started hive, worked fine.

Cheers, Ajmal

于 2015-01-21T07:05:59.407 回答
0

我遇到了这个问题,就我而言,它是在从命令行运行hive命令时。

我在使用 kerberized hive 时通过运行kinit命令解决了这个问题。

kinit -kt <your keytab file location> <kerberos principal>
于 2016-10-12T08:43:41.493 回答