无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient

时间:2014-01-02 18:19:05

标签: hive metastore

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

但是当我在hive中尝试show databases和create table命令时>提示给我错误如下:

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命令创建了这些路径..并在重启后尝试过.. 还是得到错误..

的问候, 萨蒂亚

4 个答案:

答案 0 :(得分:2)

尝试指定这两个属性

<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连接字符串中的sepcified。这可以使用以下命令

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我有类似的问题,我的案例中的原因是selinux阻止Postgres正常运行。

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

echo 0&gt; / selinux / enforce#暂时禁用selinux

并使用hive Metastore重新启动节点。

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

  1. 检查Metastore的DB是否正常运行
  2. 来自该属性的user / passwd是否正确

答案 3 :(得分:0)

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

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

希望它适合你。