【问题标题】:Cannot run Hive metastore with remote mode无法使用远程模式运行 Hive Metastore
【发布时间】:2014-04-07 22:40:26
【问题描述】:

我在我的 Apache Hadoop 分布式集群中添加了 Hive。而不是在本地目录中创建元存储,我想在 HDFS 中创建元存储。但是,我在 hive-site.xml 中的设置似乎不起作用。我收到如下错误,似乎 hive 仍然尝试在本地模式下使用 run metastore。

java.sql.SQLException: 目录 /home/zz/metastore_db 无法创建。

谁能告诉我我的设置出了什么问题?非常感谢!

以下是我的 hive-site.xml 内容:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://client2/metastore</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>MySQL JDBC driver class</description>
</property>

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

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>user name for connecting to mysql server </description>
</property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hadoop</value>
</property>

<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
</property>

<property>
    <name>hive.server2.servermode</name>
    <value>thrift</value>
</property>

<property>
    <name>datanucleus.autoCreateSchema</name>
    <value>false</value>
</property>

<property>
    <name>datanucleus.fixedDatastore</name>
    <value>true</value>
</property>

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>master1</value>
</property>

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://client2:9083</value>
    <description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>

【问题讨论】:

  • 您不能将 Metastore 保存在 hdfs 中,它应该保存在 mysql、postgres 等数据库中。
  • 我在 mysql 中创建了一个元存储数据库,并将所有权限授予我的 hive 用户。我还确认我的 hive 用户可以登录 mysql shell。

标签: hadoop hive metastore


【解决方案1】:

确保hive-site.xml 文件在 hive 类路径中。在您的情况下,更新后的 hive-site.xml 文件没有正确采用,而是采用默认值。在执行 hive 命令之前,可以使用以下环境变量来显式设置 hive conf 目录

export HIVE_CONF_DIR=<PATH-TO-CONF-DIR>  

(目录包含hive-site.xml应指定)

为了将远程 mysql 配置为 hive 元存储,首先您必须在远程 mysql(元存储数据库)中创建具有足够权限的数据库。最初数据库是空的,因此通过将以下属性设置为 true 将自动在远程数据库中创建元存储模式,如果数据库是空的

<property>
    <name>datanucleus.autoCreateSchema</name>
    <value>true</value>
</property>

如果问题仍然存在,请使用选项--config 启动配置单元,如下所示

hive --config <PATH-TO-CONF-DIR>

【讨论】:

  • sachinjose,谢谢你的帮助。根据您的建议,我在 $HIVE_HOME/conf/hive-env.sh 文件中设置了 HIVE_CONF_DIR 变量,并将 datanucleus.autoCreateSchema 的值更改为 true。重新启动 hive 后,我仍然看到相同的错误消息。还有什么可能出错的吗?我还发现 hive 试图在我启动 hive 的目录下创建 metastore_db(而不是 metastore)。这不是我所期望的,我希望在专门的地方创建元存储。
  • sachinjose,我尝试使用“hive --config /usr/local/hive-0.11.0/conf”来启动 hive。 Hive 确实启动了,但是当我在 hive 提示符下尝试“show tables”命令时仍然出现相同的错误。感谢您的帮助!
  • 看起来您的 hive-site.xml 中缺少 标签尝试添加
  • 它没有丢失。我只是没有在这篇文章中包含它。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 2016-08-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
相关资源
最近更新 更多