如何将Hive Metastore配置为使用本地文件系统而不是Derby?

时间:2019-06-03 13:42:44

标签: hadoop hive hdfs derby

我正在尝试建立本地配置单元实例,并希望将本地文件系统用作我的metastore和数据仓库。不使用derby就能实现吗?

How to use Hive without hadoop之后,我如图所示设置了hive-site.xml:

<configuration>
      <property>
         <name>hive.metastore.local</name>
         <value>true</value>
      </property>   
      <property>
         <name>hive.metastore.metadb.dir</name>
         <value>file:///var/metastore/metadb/</value>
      </property>
      <property>
         <name>hive.metastore.schema.verification</name> 
         <value>false</value> 
      </property> 
     <property> 
        <name>hive.metastore.warehouse.dir</name> 
        <value>file:///var/metastore/metadb/</value>
        <description></description> 
     </property>
     <property> 
        <name>fs.default.name</name> 
        <value>file:///tmp</value> 
     </property> 
</configuration>

我希望我可以在终端上运行hive,而不会出现任何问题,但是我遇到以下错误:

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))

我没有使用JDBC metastore(即derby),所以为什么我仍然需要使用JDBC连接字符串(根据错误消息?)。甚至可以在没有德比的情况下运行本地配置单元实例吗?

3 个答案:

答案 0 :(得分:2)

Hive Metastore进程不能仅使用文件系统。它需要一个关系数据库。 “ Hive仓库”不同,存储内部托管Hive表的位置可以是任何与Hadoop兼容的文件(例如本地磁盘)

Derby既可以存储在内存中,也可以永久存储在磁盘上,但是使用Mysql或Postgres可以提高性能

注意:Hive仍然需要Hadoop库,因此即使没有使用YARN或HDFS,也无法实现“没有Hadoop”

此外,属性fs.default.name已被弃用并由fs.defaultFS取代,并且必须位于core-site.xml中,它不是有效的蜂巢站点属性

  

我没有使用JDBC元存储(即derby),

是的,通过Hive默认属性

javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=metastore_db;create=true

答案 1 :(得分:2)

master

不推荐使用设置。

您可以使用本地文件目录存储配置单元数据,但是它通过hadoop实现,这意味着您仍然需要安装hadoop才能使用本地文件系统存储配置单元数据。这是MacOS上的示例:

filter-branch

它将使用目录'/ Users // hive / data'存储您的蜂巢数据。

答案 2 :(得分:0)

Metastore是Apache Hive元数据的中央存储库。它将Hive表的元数据(如其架构和位置)和分区存储在关系数据库中。

因此您需要RDBMS。

Hive支持的数据库: 德比 的MySQL MS SQL服务器 甲骨文 Postgres