我在Apache Hadoop分布式集群中添加了Hive。相反,在本地目录中创建Metastore,我想在HDFS中创建Metastore。但是,我在hive-site.xml中的设置似乎不起作用。我得到了如下的错误,似乎蜂巢仍试图在本地模式下使用run Metore。
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>
答案 0 :(得分:1)
确保hive类路径中有hive-site.xml
文件。在您的情况下,更新的hive-site.xml文件未正确使用,而是采用默认值。对于显式设置hive conf目录,可以在执行hive命令之前使用以下环境变量
export HIVE_CONF_DIR=<PATH-TO-CONF-DIR>
(目录中应包含hive-site.xml)
要将远程mysql配置为hive Metastore,首先必须在远程mysql(Metastore数据库)中创建具有足够权限的数据库。最初数据库将为空,因此,如果数据库为空,则通过将以下属性设置为true将自动在远程数据库中创建Metastore模式
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
如果问题仍然存在,请使用选项--config
启动配置单元,如下所示
hive --config <PATH-TO-CONF-DIR>