Як встановити та налаштувати HIVE Metastore за допомогою MYSQL
⚡ Розумний підсумок
Метасховище Hive зберігає кожне визначення таблиці, назву стовпця та тип даних за Apache Hive, переміщуючи це сховище з бази даних Derby за замовчуванням до MySQL це те, що дозволяє кільком користувачам підключатися одночасно.

Що таке HIVE Metastore?
Метастор Hive — це репозиторій, який зберігає метадані (назви стовпців, типи даних, коментарі тощо), пов’язані з Вулик апачів використання MySQL or PostgreSQL. Це метасховище Hive реалізовано за допомогою таблиць у реляційній базі даних.
У метасховищі ніщо не містить самих рядків. Записи залишаються на HDFS, а метасховище записує лише де знаходиться кожна таблиця та як називаються її стовпці, тому втрата метасховища коштує схемі, а не даним.
Навіщо використовувати MySQL у Hive як Metastore
Бекенд метасховища — це вибір, а не фіксована частина Hive, і стандартна налаштування навмисно мінімальні. Три обмеження відштовхують майже кожну інсталяцію від нього.
- За замовчуванням Hive постачається з базою даних Derby як сховищем метафайлів.
- Дербі може підтримувати лише одного активного користувача одночасно.
- Дербі не рекомендується використовувати у виробничому середовищі.
Отже, рішення тут таке
- Скористайтеся кнопкою MySQL як метасховище на серверній частині для одночасного підключення кількох користувачів до Hive
- MySQL є найкращим вибором для автономного сховища метафайлів
Як встановити та налаштувати Hive Metastore для MySQL Database
Дев'ять кроків, наведених нижче, виконуються по порядку на комп'ютері, на якому вже встановлено 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 lib. Це м’яке посилання між 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 – це значення, яке ми повинні згадати в тезі значення.
- Ця властивість використовується для визначення імені користувача підключення. У цьому випадку ми визначили «hiveuser» як ім'я користувача.
- Ця властивість використовується для згадування пароля підключення. У цьому випадку ми визначили «hivepassword» як пароль користувача.
Після розміщення властивостей у hive-site.xml нам потрібно вручну зберегти зміни (Ctrl+S) та закрити файл. Після закриття цього файлу нам потрібно створити таблицю Hive та перевірити деталі таблиці в MySQL зберігання
Розмістіть цей код у hive-site.xml
hive-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 режим оболонки
Спочатку вибирається база даних метасховища, а нижче наведено список таблиці, що наведено нижче.
З наведеного вище знімка екрана ми бачимо наступне
- Спочатку нам потрібно вибрати базу даних за допомогою опції «використовувати метасторінку».
- Після вибору метасховища ми можемо перевірити таблиці, що в ньому присутні, за допомогою команди «показати таблиці», як показано на скріншоті.
- Які б таблиці не були створені в Hive, метадані, що відповідають цим таблицям, зберігаються в TBLS у MySQL база даних
- Таблиця «guru99» створюється в Hive, тому відповідні метадані зберігаються в MySQL під TBLS
Крок 9) Введіть select * з TBLS
Перевірка наявності створеної таблиці в MySQL чи ні. Запит та його результат відображаються на знімку екрана нижче.
Якщо ввести select * з TBLS, відобразяться таблиці, які ми створили в режимі оболонки Hive
З наведеного вище знімка екрана ми можемо побачити наступні речі:
- Таблицю з назвою «guru99», створену в Hive, можна відобразити в MySQL режим оболонки
- Окрім цього, він також надаватиме таку інформацію, як час створення таблиці, час доступу та інші властивості, як показано на скріншоті вище.
Як ініціалізувати схему метастору Hive за допомогою 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 |
| -інфо | Повідомляє версію схеми, записану в базі даних |
| -схема_оновлення | Мігрує існуючу схему після оновлення Hive |
| -валідація | Перевіряє схему на наявність відсутніх таблиць та невідповідностей версій |
Одну пов'язану властивість варто знати перед першим запуском. Коли hive.metastore.schema.verification має значення true, Hive порівнює версію схеми в MySQL проти своїх власних і відмовляється запускатися при невідповідності. Ця перевірка є запобіжним заходом, тому правильною відповіддю буде запустити оновлення, а не вимкнути його. Те саме MySQL Бекенд використовується інсталяцією Hive, що розглядається встановити Hive на Ubuntu.
Поширені помилки Hive Metastore та способи їх виправлення
Більшість збоїв на цьому етапі призводять до появи одного з небагатьох повідомлень, і кожне з них вказує на певний крок вище, а не на сам Hive.
| симптом | Причина та усунення |
|---|---|
| Інформацію про версію не знайдено в метасховищі | Схема ніколи не була створена. Запустіть schematool з -initSchema для тієї ж бази даних, що й у з'єднанні. URL |
| Виняток ClassNotFoundException для драйвера JDBC | JAR-файл конектора відсутній у каталозі Hive lib, або використовується Connector/J 8, а клас тепер має назву com.mysql.cj.jdbc.Driver. Перевірте програмне посилання з кроку 3. |
| Доступ заборонено для користувача hiveuser | Привілеї надано лише одному хосту. Створіть обліковий запис як для localhost, так і для хоста з підстановочним символом, а потім запустіть функцію очищення привілеїв. |
| Синтаксична помилка поруч із IDENTIFIED BY | MySQL 8 видалено IDENTIFIED BY з оператора GRANT. Спочатку виконайте CREATE USER, а потім GRANT. |
| Отримання відкритого ключа заборонено | Connector/J 8 за замовчуванням відхиляє незашифроване рукостискання. Додайте useSSL=false та allowPublicKeyRetrieval=true до JDBC. URL у довіреній мережі |
| Таблиці відсутні після оновлення Hive | Схема все ще відповідає старій версії. Запустіть schematool з -upgradeSchema замість того, щоб вимикати перевірку схеми. |
Після того, як метасховище надішле надійну відповідь, записані ним визначення таблиць створюються за допомогою операторів, описаних у Створення, зміна та видалення таблиці у вулику.








