Как настроить Hive metastore для использования локальных файловых систем вместо Derby? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь подключить локальный экземпляр улья и хочу использовать локальную файловую систему как мое хранилище метастазов и хранилище данных. Можно ли этого добиться без использования дерби?

После Как использовать Hive без 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 (согласно сообщению об ошибке?). Можно ли даже запустить локальный экземпляр улья без дерби?

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Процесс метастазирования Hive не может использовать только файловую систему.Нужна реляционная база данных.«Хранилище Hive» отличается, где хранятся внутренние управляемые таблицы Hive, и это может быть любая совместимая с Hadoop файловая система (например, локальный диск)

Дерби хранится либо в памяти, либо постоянно хранится на диске, ноиспользование Mysql или Postgres позволит повысить производительность

Примечание. Для Hive по-прежнему требуются библиотеки Hadoop, поэтому «без Hadoop» невозможно, даже если вы не используете YARN или HDFS

. Такжесвойство fs.default.name устарело и заменено на fs.defaultFS и должно находиться в core-site.xml; это недопустимое свойство hive-site

Я не использую метастор JDBC (т.е. дерби),

Да, вы через свойства Hive по умолчанию

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

0 голосов
/ 07 июня 2019

Metastore - это центральное хранилище метаданных Apache Hive. Он хранит метаданные для таблиц Hive (например, их схему и расположение) и разделов в реляционной базе данных .

Итак, вам нужна СУБД.

Базы данных, поддерживаемые Hive: дерби MySQL MS SQL Server оракул Postgres

...