3

我有一个运行 hive 的 3 节点集群。当我尝试从集群外部运行一些测试时,出现以下错误

失败:元数据错误:java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient 失败:执行错误,从 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 {我的用户名}(auth:SIMPLE) 原因: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 文件

4

7 回答 7

10

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

如果它是一个测试集群,你可以做

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

或者chown它给运行它的用户。

于 2013-04-05T17:52:10.833 回答
1

尝试删除 $HADOOP_HOME/build 文件夹。我对 hive-0.10.0 或更高版本有同样的问题。然后我尝试了 hive-0.9.0 并得到了一组不同的错误。幸运的是发现这个线程Hive 在 install 上不起作用。尝试了同样的技巧,它神奇地为我工作。我正在使用默认的德比数据库。

于 2013-05-24T19:34:00.827 回答
1

这是针对 hive 文件夹的权限问题。请德以下将运作良好。转到 hive 用户,对于我 hduser,sudo chmod -R 777 hive

于 2013-06-18T05:38:13.120 回答
1

此问题是由于 hive shell 的突然终止而发生的。它创建了一个无人值守的 db.lck 文件。为了解决这个问题,

浏览到您的 metastore_db 位置
,删除 tmp、dbex.lck 和 db.lck 文件。再次打开蜂巢外壳。它会起作用的。

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

于 2017-05-23T21:56:32.757 回答
0

在我将元存储从 /var/lib/hive/ 移动后,它起作用了。我通过编辑来做到这一点:/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>

`

于 2014-07-27T03:48:35.463 回答
0

请确保您的 hadoop 目录中是否已经有 MetaStore_db,如果有,请将其删除并再次格式化您的 hdfs,然后尝试启动 hive

于 2017-07-02T02:08:09.203 回答
-1

是的,这是特权问题。通过以下命令输入您的配置单元外壳:

sudo -u hdfs hive
于 2013-07-10T06:09:18.793 回答