【问题标题】:Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient
【发布时间】:2015-06-16 01:18:23
【问题描述】:

我刚刚安装了 hive 和 mysql.. 并将 mysqlconnector 复制到 hive_home/lib 文件夹

但是当我尝试在配置单元中显示数据库和创建表命令时>提示给我如下错误:

create database saty;
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

而我的 hive_site.xml 是

<property>    
  <name>javax.jdo.option.ConnectionURL</name>         
  <value>jdbc:mysql://localhost:3306/hadoop?CreateDatabaseIfNotExist=true</value>         
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>

而且我的文件系统中没有名为 /user/hive/warehouse 的目录。

我使用 mkdir 命令创建了这些路径.. 并在重新启动后尝试.. bout 仍然得到错误..

问候, 萨提亚

【问题讨论】:

    标签: hive metastore


    【解决方案1】:

    尝试指定这两个属性

    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>username</value>
    <description>Username to use against metastore database</description>
    </property>
    
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>password</value>
    <description>Password to use against metastore database</description>
    </property>
    

    同样,您的 mysql 登录用户名应该具有访问 JDBC 连接字符串中指定的数据库的权限。这可以使用以下命令来实现

    GRANT ALL ON Databasename.* TO username@'%' IDENTIFIED BY 'password';
    

    【讨论】:

      【解决方案2】:

      答案位于http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/5.0/CDH5-Installation-Guide/cdh5ig_hive_schema_tool.html

      要抑制架构检查并允许元存储隐式修改架构,您需要在 hive-site.xml 中将 hive.metastore.schema.verification 配置属性设置为 false。

      【讨论】:

        【解决方案3】:

        使用 -hiveconf hive.root.logger=warn,console 重新配置您的配置单元,然后找到您无法实例化配置单元伙伴商店客户端的详细原因。

        我遇到的问题是 mysql 配置错误,错误消息是“无法进行二进制日志记录。消息:InnoDB 中的事务级别 'READ-COMMITTED' 对于 binlog 模式 'STATEMENT' 是不安全的”。当我将 binlog_format 从“statement”更改为“binlog_format=mixed”时,hive 元存储客户端实例化成功。

        希望它对你有用。

        【讨论】:

          【解决方案4】:

          我遇到了类似的问题,我的原因是 selinux 导致 Postgres 无法正常运行。

          我在 /etc/rc3.d/S64postgresql 的第一行插入了以下行 -

          echo 0 > /selinux/enforce # 暂时禁用 selinux

          并使用 hive 元存储重新启动节点。

          所以一般你可以检查两件事:

          1. 检查 Metastore 的 DB 是否正常运行
          2. 属性中的用户/密码是否正确

          【讨论】:

            猜你喜欢
            • 2014-05-07
            • 2015-08-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-03
            • 2016-06-09
            • 2020-10-26
            • 2016-11-22
            • 2016-02-29
            相关资源
            最近更新 更多