Как установить и настроить HIVE Metastore с MYSQL
⚡ Умное резюме
В хранилище метаданных Hive хранятся все определения таблиц, имена столбцов и типы данных в Apache Hive, и перенос этого репозитория из базы данных Derby по умолчанию в MySQL Именно это позволяет нескольким пользователям подключаться одновременно.
Что такое HIVE Metastore?
Hive Metastore — это репозиторий, в котором хранятся метаданные (названия столбцов, типы данных, комментарии и т. д.), относящиеся к... Апачский улей через MySQL or PostgreSQL. Это хранилище метаданных Hive реализовано с использованием таблиц в реляционной базе данных.
В метаданных нет информации о самих строках. Записи остаются в HDFS, а метаданные содержат только информацию о местонахождении каждой таблицы и названиях её столбцов, поэтому их потеря приводит к повреждению схемы, а не данных.
Зачем использовать MySQL в Hive как Metastore
Бэкенд метаданных — это выбор, а не фиксированная часть Hive, и поставляемый по умолчанию вариант намеренно минималистичен. Три ограничения заставляют почти все установки отказаться от него.
- По умолчанию Hive использует базу данных Derby в качестве хранилища метаданных.
- В Дерби одновременно может работать только один активный пользователь.
- Использование Дерби в производственных условиях не рекомендуется.
Итак, решение здесь следующее:
- Используйте MySQL в качестве метаданных на бэкэнде для одновременного подключения нескольких пользователей к Hive
- MySQL это лучший выбор для автономного метахранилища.
Как установить и настроить Hive Metastore для MySQL База данных
Описанные ниже девять шагов выполняются по порядку на компьютере, на котором уже установлены Hadoop и Hive. Каждый шаг завершается скриншотом фактического вывода терминала или командной строки.
Шаг 1) Установите MySQL серверу
На этом этапе мы собираемся выполнить две задачи
- Установка mysql-сервера
- Проверка mysql-сервера и его процесса
Посмотрите на график sudo apt-get install mysql-server команду, мы можем загрузить MySQL сервер. Установить MySQL как показано на скриншоте ниже.
После успешной установки MySQL Процесс будет запущен, как показано на скриншоте ниже, где проверка процесса подтверждает работоспособность службы.
Шаг 2) Установите MySQL Java соединитель
Установка MySQL Java разъем. Это для Java зависимости и цели подключения, поскольку Hive достигает MySQL через JDBC. На следующем скриншоте показана установка пакета.
Шаг 3) Создайте мягкую ссылку для соединителя
Создание символической ссылки для коннектора в каталоге библиотек Hive. Это символическая ссылка между Java и MySQLИменно это добавляет JAR-файл драйвера в путь поиска классов Hive. Команда и её результат приведены ниже.
Шаг 4) Настройка MySQL хранилище в Улье
MySQL Для создания любого пользователя Hive необходимо открыть оболочку под учетной записью root, как показано далее.
- Введите команду `mysql –u root –p`, а затем пароль.
- Здесь –u обозначает имя пользователя root, а –p – пароль.
- После ввода указанной выше команды пользователю необходимо ввести действительный пароль и нажать клавишу Enter.
- Тогда оно войдет в MySQL режим оболочки
Шаг 5) Создайте имя пользователя и пароль.
Создание имени пользователя и пароля для MySQLи предоставление привилегий. На скриншоте ниже показаны три оператора, выполняющиеся внутри. MySQL ракушка.
Нам нужно выполнить команды, как показано ниже:
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8. Объединенная форма второго оператора больше не обрабатывается, поскольку IDENTIFIED BY был удален из GRANT. Сначала создайте учетную запись, а затем предоставьте ей права доступа, и повторите строку CREATE USER как для хоста localhost, так и для хоста с подстановочным знаком.
Шаг 6) Настройка файла hive-site.xml
- После выполнения шага 5 назначаются имя пользователя и пароль. MySQL база данных и предоставление привилегий.
- Здесь мы настроим некоторые параметры в Hive для установления соединения с... MySQL .
Конфигурационный файл открывается из каталога Hive conf, как показано на следующем скриншоте.
На следующем скриншоте показан готовый файл со всеми четырьмя свойствами.
На приведенном выше скриншоте мы видим следующее. Здесь мы определяем 4 свойства, необходимые для установления MySQL в качестве метахранилища в Hive.
Это следующие:
- Это свойство предназначено для подключения. URLЗдесь мы определяем соединение.URL В этом свойстве оно выступает в качестве строки подключения JDBC и также представляет собой местоположение хранилища метаданных.
- Это свойство используется для указания имени драйвера подключения. В данном случае com.mysql.jdbc.Driver — это значение, которое необходимо указать в теге value.
- Это свойство используется для определения имени пользователя для подключения. В данном случае мы определили «hiveuser» в качестве имени пользователя.
- Это свойство используется для указания пароля подключения. В данном случае мы определили «hivepassword» в качестве пароля пользователя.
После того, как свойства будут добавлены в файл hive-site.xml, необходимо вручную сохранить (Ctrl+S) и закрыть файл. После закрытия файла необходимо создать таблицу Hive и проверить сведения о ней. MySQL место хранения.
Поместите этот код в hive-site.xml.
улей-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> <description>metadata is stored in a MySQL server</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>MySQL JDBC driver class</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> <description>user name for connecting to mysql server</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> <description>password for connecting to mysql server</description> </property> </configuration>
Два из указанных выше значений зависят от используемой версии разъема. MySQL В Connector/J 8 класс драйвера был переименован в com.mysql.cj.jdbc.Driver, и теперь он ожидает явного указания порта и настроек SSL, поэтому современный URL Обычно читается jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Поскольку пароль хранится в открытом виде, файл должен быть доступен для чтения только учетной записи службы Hive.
Шаг 7) Создайте таблицу
Создайте таблицу «guru99» в Hive, как показано в приведенном ниже примере оболочки Hive.
На скриншоте выше мы можем наблюдать следующее
- Создание таблицы с именем «guru99» с двумя названиями столбцов.
- В названиях столбцов указаны их типы данных: один — целое число, другой — строка.
На следующем шаге мы проверим, хранится ли он в MySQL или нет.
Шаг 8) Войдите в MySQL режим оболочки
Сначала выбирается база данных metastore, а ниже представлен список таблиц.
На скриншоте выше мы можем наблюдать следующее
- Сначала нам нужно выбрать базу данных с помощью параметра «use metastore».
- После выбора хранилища метаданных мы можем проверить содержащиеся в нем таблицы, используя команду «show tables», как показано на скриншоте.
- Независимо от того, какие таблицы создаются в Hive, метаданные, соответствующие этим таблицам, хранятся в TBLS. MySQL база данных
- Таблица «guru99» создается в Hive, поэтому соответствующие метаданные хранятся в ней. MySQL в рамках TBLS
Шаг 9) Введите select * from TBLS.
Проверка наличия созданной таблицы в MySQL или нет. Запрос и его результат представлены на скриншоте ниже.
При вводе select * from TBLS будут отображаться таблицы, которые мы создали в режиме оболочки Hive.
На скриншоте выше мы можем наблюдать следующие вещи:
- Название таблицы «guru99», созданной в Hive, можно отобразить в MySQL режим оболочки
- Помимо этого, он также предоставит информацию о времени создания таблицы, времени доступа и других свойствах, как показано на скриншоте выше.
Как инициализировать схему Hive Metastore с помощью schematool
Флаг createDatabaseIfNotExist в соединении URL Создаёт пустую базу данных метаданных, но не создаёт примерно семьдесят таблиц, которые Hive ожидает в ней. В Hive 1.x и более поздних версиях эта задача выполняется утилитой schematool, и она пропускается.ping Это самая распространенная причина, по которой только что настроенное хранилище метаданных отказывается запускаться.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
Команда считывает те же четыре свойства из файла hive-site.xml, устанавливает соединение с учетной записью hiveuser и запускает встроенный SQL-скрипт, соответствующий версии Hive. Успешное выполнение завершается сообщением о завершении, после чего состояние можно подтвердить в любое время.
$HIVE_HOME/bin/schematool -dbType mysql -info
Приведённые ниже флаги охватывают весь жизненный цикл схемы метаданных.
| Опция | Что она делает |
|---|---|
| -dbType | Указывает название бэкэнда, например, mysql, derby, postgres, oracle или mssql. |
| -initSchema | Создает таблицы метаданных для текущей версии Hive. |
| -Информация | Сообщает версию схемы, зарегистрированную в базе данных. |
| -upgradeScheme | Выполняет миграцию существующей схемы после обновления Hive. |
| -Validate | Проверяет схему на наличие отсутствующих таблиц и несоответствий версий. |
Перед началом работы стоит знать об одном связанном свойстве. Если hive.metastore.schema.verification имеет значение true, Hive сравнивает версию схемы в MySQL Это противоречит собственным правилам и отказывается запускаться при несоответствии. Эта проверка является мерой предосторожности, поэтому правильным решением будет запустить обновление, а не отключать его. То же самое MySQL бэкенд используется при установке Hive, описанной в установить Hive на Ubuntu.
Распространенные ошибки Hive Metastore и способы их исправления
Большинство сбоев на этом этапе приводят к появлению одного из нескольких сообщений, и каждое из них указывает на конкретный шаг выше, а не на саму систему Hive.
| Симптом | Причина и устранение |
|---|---|
| Информация о версии не найдена в метахранилище. | Схема так и не была создана. Запустите schematool с параметром -initSchema для той же базы данных, которая указана в подключении. URL |
| Исключение ClassNotFoundException для драйвера JDBC | В каталоге библиотек Hive отсутствует JAR-файл коннектора, или используется Connector/J 8, и класс теперь называется com.mysql.cj.jdbc.Driver. Перепроверьте символическую ссылку из шага 3. |
| Доступ запрещен для пользователя hiveuser | Привилегии были предоставлены только одному хосту. Создайте учетные записи для localhost и хоста с подстановочным знаком, затем выполните команду flush privileges. |
| Синтаксическая ошибка около IDENTIFIED BY | MySQL Удалите 8 символов из оператора GRANT. Сначала выполните команду CREATE USER, а затем GRANT. |
| Получение открытого ключа запрещено. | Connector/J8 по умолчанию отклоняет незашифрованное рукопожатие. Добавьте useSSL=false и allowPublicKeyRetrieval=true в JDBC. URL в доверенной сети |
| После обновления Hive отсутствуют таблицы. | Схема по-прежнему соответствует старой версии. Запустите schematool с параметром -upgradeSchema вместо отключения проверки схемы. |
После того как метаданные начнут надежно отвечать, в них будут созданы определения таблиц с использованием операторов, описанных в Создание, изменение и удаление таблиц в Hive..









