无法实例化HiveMetaStoreClient

时间:2013-04-04 11:46:29

标签: hadoop permissions hive hdfs hue

我有一个运行配置单元的3节点集群。 当我尝试从群集外部运行一些测试时,我得到以下错误

  

FAILED:元数据错误:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient   FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1   使用文件中的配置初始化日志:/net/slc01nwj/scratch/ashsshar/view_storage/ashsshar_bda_latest_2/work/hive_scratch/conf/hive-log4j.properties

当我登录到群集节点并执行hive时,它正常工作。

蜂房>显示数据库; 好 默认

以下错误发生在测试日志文件中

  

13/04/04 03:10:49错误security.UserGroupInformation:PriviledgedActionException as:ashsshar {my username}(auth:SIMPLE)cause:java.io.IOException:javax.jdo.JDOFatalDataStoreException:无法创建数据库' / var / lib / hive / metastore / metastore_db',有关详细信息,请参阅下一个异常。   NestedThrowables:   java.sql.SQLException:无法创建数据库'/ var / lib / hive / metastore / metastore_db',有关详细信息,请参阅下一个异常。

我的hive-site.xml文件包含此连接属性::

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>

我更改了群集节点上的/var/lib/hive/metastore/metastore_db,但仍然收到相同的错误

我也尝试从上面的目录中删除所有* lck文件

7 个答案:

答案 0 :(得分:10)

{username}是否具有创建权限 /var/lib/hive/metastore/metastore_db

如果是测试群集,则可以

sudo chmod -R 777 /var/lib/hive/metastore/metastore_db

chown运行它的用户。

答案 1 :(得分:1)

尝试删除$ HADOOP_HOME / build文件夹。我和hive-0.10.0或更高版本有同样的问题。然后我尝试了hive-0.9.0并得到了一组不同的错误。幸运的是找到了这个帖子Hive doesn't work on install。尝试了相同的技巧,它神奇地为我工作。我正在使用默认德比数据库。

答案 2 :(得分:1)

这是针对hive文件夹的权限问题。请de以下将运作良好。 去hive用户,对我来说, sudo chmod -R 777 hive

答案 3 :(得分:1)

由于hive shell的突然终止,会出现此问题。这创建了一个无人参与的db.lck文件。 要解决此问题,

  

浏览到你的metastore_db位置
  删除tmp,dbex.lck和db.lck文件。   再次打开配置单元shell。它会起作用。

您可以再次看到tmp,dbex.lck和db.lck文件的创建。

答案 4 :(得分:0)

我从/ var / lib / hive /移动了Metastore后,它工作了。我是通过编辑来完成的:/etc/hive/conf.dist/hive-site.xml

从:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

为:

<property>  
<name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=/home/prashant/hive/metastore/metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

`

答案 5 :(得分:0)

请确认你的hadoop目录中是否有MetaStore_db,如果有,删除它并重新格式化你的hdfs, 然后尝试启动配置单元

答案 6 :(得分:-1)

是的,这是特权问题。按以下命令输入您的配置单元shell:

sudo -u hdfs hive