3

我在 3 个集群上安装了 Hadoop 和 Hive。我可以从运行 HIVE 的集群节点登录到 hive。

root@NODE_3 hive]# hive 使用 jar 中的配置初始化日志记录:file:/usr/lib/hive/lib/hive-common-0.10.0-cdh4.2.0.jar!/hive-log4j.properties Hive 历史文件=/ tmp/root/hive_job_log_root_201304020248_306369127.txt hive> 显示表;OK 所用时间:1.459 秒蜂巢>

但是当我尝试在我的集群节点上运行一些配置单元测试时,我得到以下错误。

这里它试图以用户 =ashsshar{my username} 身份初始化数据库

3/04/02 02:32:44 INFO mapred.JobClient:清理暂存区 hdfs://scaj-ns/user/ashsshar/.staging/job_201304020010_0080 13/04/02 02:32:44 错误 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',有关详细信息,请参阅下一个异常。java.io.IOException: javax.jdo.JDOFatalDataStoreException: 无法创建数据库 '/var/lib/hive/metastore/metastore_db',有关详细信息,请参阅下一个异常。NestedThrowables:java.sql.SQLException:无法创建数据库'

我尝试了两件事。

1. 授予 cd /var/lib/hive/metastore/metastore_db 权限

  1. 删除 rm /var/lib/hive/metastore/metastore_db/*lck

但我仍然遇到同样的错误

4

3 回答 3

2

创建元存储似乎是一个问题。我通过创建一个目录并将值设置为该目录来解决这个问题,如下所示:

步骤 1:在 home 上创建一个目录说它:hive-metastore-dir

第 2 步:作为超级用户编辑 hive-site.xml(其位于:/usr/lib/hive/conf),如下所示:

<name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>

<name>javax.jdo.option.ConnectionURL</name> 
  <value>jdbc:derby:;databaseName=/home/hive-metastore-dir/metastore/metastore_db;create=true</value>

第 3 步:以sudo hive启动 CLI并执行查询。

于 2014-08-30T23:13:43.520 回答
0

您可以从用户具有写入权限的目录登录到 hive 客户端。默认情况下,打开 shell 时,hive 将尝试在本地和 HDFS 中创建临时目录。

于 2017-03-07T22:21:21.290 回答
0

如果您使用 CDH,请按照以下步骤操作 1. 复制 /usr/lib/hive/conf/hive-site.xml 并粘贴到 /usr/lib/spark/conf/

这将解决“metastore_db”错误的问题

谢谢

于 2018-01-10T17:04:12.823 回答