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

时间:2013-04-22 18:24:29

标签: hadoop hql hive hdfs

我在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 个答案:

答案 0 :(得分:10)

我已经解决了这个问题。这些是我遵循的步骤:

  1. 转到$ HIVE_HOME / bin / metastore_db
  2. 将db.lck复制到db.lck1,将dbex.lck复制到dbex.lck1
  3. 从db.lck和dbex.lck
  4. 中删除了锁定条目
  5. 从hive shell以及所有正在运行的HDFS实例
  6. 中注销
  7. 重新登录HDFS和hive shell。如果您运行DDL命令,它可能会再次为您提供“无法实例化HiveMetaStoreClient错误”
  8. 现在将db.lck1复制回db.lck,将dbex.lck1复制回dbex.lck
  9. 从所有配置单元shell和HDFS实例中注销
  10. Relogin,你应该看到你的旧桌子
  11. 注意:第5步可能看起来有点奇怪,因为即使删除了锁定条目,它仍然会给出HiveMetaStoreClient错误,但它对我有效。

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

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

答案 1 :(得分:9)

有人告诉我,如果蜂巢控制台未正确终止,我们通常会遇到此异常。 修复:

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

答案 2 :(得分:1)

请参阅:getting error in hive

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

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

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

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

答案 3 :(得分:1)

我遇到了同样的问题并通过启动Metastore服务解决了这个问题。有时,如果您的计算机重新启动或停机,服务可能会停止。您可以通过运行命令启动该服务:

$HIVE_USER

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

答案 4 :(得分:1)

我遇到了与hive服务器类似的问题,并遵循以下步骤:
1.转到$ HIVE_HOME / bin / metastore_db
2.将db.lck复制到db.lck1,将dbex.lck复制到dbex.lck1
3.从db.lck和dbex.lck中删除了锁定条目 4.从蜂巢壳中重新定位。它正在工作中 感谢

答案 5 :(得分:1)

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

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

我的错误已解决

答案 6 :(得分:0)

我也遇到了同样的问题,并且发现我有hive-deafult.xml和hive-site.xml(由我手动创建),

我将hive-site.xml移动到hive-site.xml-template(因为我不需要这个文件)然后 开始蜂巢,工作得很好。

干杯, 阿杰马勒

答案 7 :(得分:0)

我遇到过这个问题,在我的情况下是从命令行运行hive命令。

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

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