【问题标题】:FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient失败:元数据错误:java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient
【发布时间】:2013-04-22 18:24:29
【问题描述】:

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

【问题讨论】:

    标签: hadoop hql hive hdfs


    【解决方案1】:

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

    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 错误,但它对我有用。

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

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

    【讨论】:

    • 当我使用 hive 命令提示符时,我无法连接 mysql 数据库。请让我知道我在哪里做错了...当我尝试连接时,我遇到了同样的异常。 “元数据中的失败错误-java-lang-runtimeexception-unable-to-instantiate-org”。如果您想要特定文件,那么我将分享该文件
    【解决方案2】:

    有人告诉我,如果 hive 控制台未正确终止,通常会出现此异常。 修复:

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

    【讨论】:

      【解决方案3】:

      见:getting error in hive

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        $HIVE_USER登录

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

        【讨论】:

          【解决方案5】:

          我在 Hive 服务器上遇到了类似的问题,并按照以下步骤操作:
          1. 前往 $HIVE_HOME/bin/metastore_db
          2.将db.lck复制到db.lck1,将dbex.lck复制到dbex.lck1
          3. 删除了db.lck和dbex.lck的锁条目
          4. 从 hive shell 重新登录。它正在工作
          谢谢

          【讨论】:

            【解决方案6】:

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

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

            我的错误解决了

            【讨论】:

              【解决方案7】:

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

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

              干杯, 阿杰马尔

              【讨论】:

                【解决方案8】:

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

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

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

                【讨论】:

                  猜你喜欢
                  • 2014-05-07
                  • 1970-01-01
                  • 2015-08-01
                  • 1970-01-01
                  • 2013-05-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多