Установка Hive – Ошибка выполнения SQL-запроса “select “DB_ID” from “DBS””

Вопрос или проблема

Я пытаюсь установить Apache Hive (3.1.1) на многовузловый кластер Hadoop (3.2.0) с 1 мастером имени и 3 узлами данных.

Я следовал пошаговому руководству по началу работы на сайте Apache, но при выполнении команды “hive” я получаю чрезвычайно длинный стек вызовов в файле hive.log наряду с некоторыми другими проблемами в самой консоли.

Ошибка в консоли связана с несколькими привязками SLF4J:

> SLF4J: Класс путь содержит несколько привязок SLF4J. SLF4J: Найдено
> привязка в
> [jar:file:/home/hadoop/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: Найдено привязка в
> [jar:file:/home/hadoop/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: Смотрите http://www.slf4j.org/codes.html#multiple_bindings для объяснения. SLF4J: Фактическая привязка типа
> [org.apache.logging.slf4j.Log4jLoggerFactory] ID сеанса Hive =
> ebd3ca4d-0910-47d7-96a1-e7d1d369f919
> 
> Логирование инициализировано с использованием конфигурации в
> jar:file:/home/hadoop/hive/lib/hive-common-3.1.1.jar!/hive-log4j2.properties
> Асинхронно: true

Ошибка Hive.log, похоже, связана с настройкой базы данных метастора. Однако я новичок в этой области и не совсем знаком со всеми используемыми терминами, поэтому мне очень трудно следить за этим стеком вызовов, и я не могу найти способ это исправить. Ниже приведен стек вызовов, но в сокращенном формате, чтобы уместиться в теле этого вопроса.

2019-07-05T10:24:28,966  INFO [main] conf.HiveConf: Найден файл конфигурации file:/home/hadoop/hive/conf/hive-site.xml
2019-07-05T10:24:29,990  INFO [main] SessionState: ID сеанса Hive = ebd3ca4d-0910-47d7-96a1-e7d1d369f919
2019-07-05T10:24:30,133  INFO [main] SessionState: 
Логирование инициализировано с использованием конфигурации в jar:file:/home/hadoop/hive/lib/hive-common-3.1.1.jar!/hive-log4j2.properties Асинхронно: true
2019-07-05T10:24:31,583  INFO [main] session.SessionState: Создана директория HDFS: /tmp/hive/hadoop/ebd3ca4d-0910-47d7-96a1-e7d1d369f919
2019-07-05T10:24:31,618  INFO [main] session.SessionState: Создана локальная директория: /tmp/hadoop/ebd3ca4d-0910-47d7-96a1-e7d1d369f919
2019-07-05T10:24:31,628  INFO [main] session.SessionState: Создана директория HDFS: /tmp/hive/hadoop/ebd3ca4d-0910-47d7-96a1-e7d1d369f919/_tmp_space.db
2019-07-05T10:24:31,644  INFO [main] conf.HiveConf: Используется значение по умолчанию, переданное для ID лога: ebd3ca4d-0910-47d7-96a1-e7d1d369f919
2019-07-05T10:24:31,644  INFO [main] session.SessionState: Обновление имени потока на ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main
2019-07-05T10:24:32,691  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.HiveMetaStore: 0: Открытие исходного магазина с классом реализации:org.apache.hadoop.hive.metastore.ObjectStore
2019-07-05T10:24:32,717  WARN [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.ObjectStore: datanucleus.autoStartMechanismMode установлен на неподдерживаемое значение null. Установка на значение: проигнорировано
2019-07-05T10:24:32,723  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.ObjectStore: ObjectStore, инициализация вызвана
2019-07-05T10:24:32,724  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] conf.MetastoreConf: Найден файл конфигурации file:/home/hadoop/hive/conf/hive-site.xml
2019-07-05T10:24:32,725  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] conf.MetastoreConf: Невозможно найти файл конфигурации hivemetastore-site.xml
2019-07-05T10:24:32,725  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] conf.MetastoreConf: Найден файл конфигурации null
2019-07-05T10:24:32,726  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] conf.MetastoreConf: Невозможно найти файл конфигурации metastore-site.xml
2019-07-05T10:24:32,726  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] conf.MetastoreConf: Найден файл конфигурации null
2019-07-05T10:24:33,634  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] hikari.HikariDataSource: HikariPool-1 - Запуск...
2019-07-05T10:24:33,641  WARN [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] util.DriverDataSource: Зарегистрированный драйвер с driverClassName=org.apache.derby.jdbc.EmbeddedDriver не найден, попытка прямой инстанциации.
2019-07-05T10:24:33,926  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] pool.PoolBase: HikariPool-1 - Драйвер не поддерживает получение/установку сетевого таймаута для соединений. (Функция не реализована: нет деталей.)
2019-07-05T10:24:33,938  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] hikari.HikariDataSource: HikariPool-1 - Запуск завершен.
2019-07-05T10:24:34,001  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] hikari.HikariDataSource: HikariPool-2 - Запуск...
2019-07-05T10:24:34,001  WARN [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] util.DriverDataSource: Зарегистрированный драйвер с driverClassName=org.apache.derby.jdbc.EmbeddedDriver не найден, попытка прямой инстанциации.
2019-07-05T10:24:34,007  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] pool.PoolBase: HikariPool-2 - Драйвер не поддерживает получение/установку сетевого таймаута для соединений. (Функция не реализована: нет деталей.)
2019-07-05T10:24:34,008  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] hikari.HikariDataSource: HikariPool-2 - Запуск завершен.
2019-07-05T10:24:34,697  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.ObjectStore: Установка классов объектов MetaStore с hive.metastore.cache.pinobjtypes="Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order"
2019-07-05T10:24:34,811  WARN [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.MetaStoreDirectSql: Запрос самопроверки [select "DB_ID" from "DBS"] не удался; прямой SQL отключен
javax.jdo.JDODataStoreException: Ошибка при выполнении SQL-запроса "select "DB_ID" from "DBS"".
...
Причина: java.sql.SQLSyntaxErrorException: Таблица/Представление 'DBS' не существует.
...
Причина: org.apache.derby.iapi.error.StandardException: Таблица/Представление 'DBS' не существует.
...
2019-07-05T10:24:34,817  INFO [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.ObjectStore: Инициализирован ObjectStore
2019-07-05T10:24:37,667 ERROR [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.RetryingHMSHandler: MetaException(сообщение: Информация о версии не найдена в метасторе.)
...

2019-07-05T10:24:37,667 ERROR [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metastore.RetryingHMSHandler: HMSHandler Фатальная ошибка: MetaException(сообщение: Информация о версии не найдена в метасторе.)
...

2019-07-05T10:24:37,667  WARN [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metadata.Hive: Не удалось зарегистрировать все функции.
java.lang.RuntimeException: Невозможно создать экземпляр org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
...
Причина: java.lang.reflect.InvocationTargetException
...
Причина: org.apache.hadoop.hive.metastore.api.MetaException: Информация о версии не найдена в метасторе.
...
2019-07-05T10:24:37,711 ERROR [ebd3ca4d-0910-47d7-96a1-e7d1d369f919 main] metadata.HiveMaterializedViewsRegistry: Проблема с подключением к метастору при инициализации реестра представлений
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Невозможно создать экземпляр org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
...
Причина: java.lang.RuntimeException: Невозможно создать экземпляр org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
...
Причина: java.lang.reflect.InvocationTargetException
...
Причина: org.apache.hadoop.hive.metastore.api.MetaException: Информация о версии не найдена в метасторе.

Я никогда не использовал базы данных Derby, Java Database Connectivity (JDBC) или MySQL на этом устройстве раньше – может быть, проблема такая же простая, как проблема зависимостей? Хотя в руководстве по Hive ничего не указано.

Заранее спасибо.

Я сталкивался с той же проблемой раньше, и вот мое решение.

В моем $HIVE_HOME/scripts/metastore/upgrade/derby/hive-schema-3.1.0.derby.sql использовавшаяся база данных была ‘APP’ (потому что ‘CREATE TABLE "APP"."DBS"‘).

Но в моем $HIVE_HOME/conf/hive-site.xml это было так:

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    <description>
      JDBC строка подключения для JDBC метастора.
      Чтобы использовать SSL для шифрования/аутентификации соединения, предоставьте аргумент SSL, специфичный для базы данных, в строке подключения.
      Например, jdbc:postgresql://myhost/db?ssl=true для базы данных postgres.
    </description>
  </property>

Итак, я заменил “metastore_db” на “APP” и повторно инициализировал метастор Derby.

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=APP;create=true</value>
    <description>
      JDBC строка подключения для JDBC метастора.
      Чтобы использовать SSL для шифрования/аутентификации соединения, предоставьте аргумент SSL, специфичный для базы данных, в строке подключения.
      Например, jdbc:postgresql://myhost/db?ssl=true для базы данных postgres.
    </description>
  </property>

Ответ или решение

Установка Hive: Ошибка при выполнении SQL-запроса "select "DB_ID" from "DBS""

Установка Apache Hive может быть непростой задачей, особенно в контексте многонодового кластера Hadoop. Рассмотрим проблему, с которой вы столкнулись, и найдем подходящее решение на основе предоставленной информации.

Понимание проблемы

Вы установили Apache Hive версии 3.1.1 на кластер Hadoop 3.2.0, но при попытке запустить команду hive возникают ошибки. В логах Hive видим, что основная проблема заключается в попытке выполнения SQL-запроса к метастору, а именно:

Caused by: org.apache.derby.iapi.error.StandardException: Table/View 'DBS' does not exist.

Это сообщение указывает на то, что Hive не может найти таблицу DBS в базе данных метастора. На данный момент необходимо убедиться, что метастор корректно инициализирован.

Шаги для решения

  1. Инициализация метастора: Убедитесь, что вы правильно создали схему для метастора Hive. Если вы используете встроенную базу данных Derby, выполните следующие шаги:

    • Откройте файл hive-schema-3.1.0.derby.sql, который находится в директории $HIVE_HOME/scripts/metastore/upgrade/derby/.
    • Убедитесь, что в этом файле создаются необходимые таблицы, включая DBS.
  2. Проверка конфигурации Hive:

    • Проверьте файл конфигурации hive-site.xml в каталоге $HIVE_HOME/conf/. Убедитесь, что параметр javax.jdo.option.ConnectionURL правильно настроен. Например:
      <property>
       <name>javax.jdo.option.ConnectionURL</name>
       <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
       <description>
         JDBC connect string for a JDBC metastore.
       </description>
      </property>
    • Если вы изменяли название базы данных, убедитесь, что оно совпадает с тем, что указано в SQL-скрипте.
  3. Решение проблемы с множественными привязками SLF4J:
    Сообщения о множественных привязках SLF4J можно игнорировать, если они не мешают работе системы. Однако, если они вызывают проблемы, рекомендуется оставить только одну версию библиотеки SLF4J в вашем classpath. Это может потребовать удаления других версий JAR-файлов из каталога lib/ Hive.

  4. Проверка наличия необходимых библиотек и зависимостей:
    Убедитесь, что у вас все необходимые зависимости установлены. В вашем случае это может быть драйвер JDBC для Derby:

    • Если вы используете Derby в качестве метастора, убедитесь, что он включен в класс-путь Hive.
  5. Перезапуск с активацией метастора:

    • После внесения изменений, повторите инициализацию метастора командой, которая запускает скрипт для установки схемы, если вы это еще не делали.
    • Запустите Hive заново, чтобы убедиться, что конфигурация работает и ошибки исчезли.

Заключение

Надеюсь, что эти шаги помогут вам решить проблему с запуском Hive и инициализацией метастора. Важно правильно настроить все компоненты и убедиться, что каждая конфигурация соответствует требованиям. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задавать.

Оцените материал
Добавить комментарий

Капча загружается...