Как да инсталирате и конфигурирате HIVE Metastore с MYSQL
⚡ Умно обобщение
Метахранилището на Hive съхранява всяка дефиниция на таблица, име на колона и тип данни зад Apache Hive и премества това хранилище от базата данни по подразбиране на Derby към MySQL това позволява на няколко потребители да се свързват едновременно.

Какво е HIVE Metastore?
Hive metastore е хранилище, което съхранява метаданни (имена на колони, типове данни, коментари и др.), свързани с Apache Hive използвайки MySQL or PostgreSQL. Това метахранилище на Hive се реализира с помощта на таблици в релационна база данни.
Нищо в метахранилището не съдържа самите редове. Записите остават в HDFS, а метахранилището записва само къде се намира всяка таблица и как се наричат нейните колони, поради което загубата му струва на схемата, а не на данните.
Защо да използвате MySQL в Hive като Metastore
Бекендът на метастора е избор, а не фиксирана част от Hive, а фабрично зададената конфигурация е умишлено минимална. Три ограничения отблъскват почти всяка инсталация от него.
- По подразбиране Hive се предлага с базата данни Derby като метахранилище.
- Дерби може да поддържа само един активен потребител в даден момент.
- Derby не се препоръчва в производствена среда.
Така че решението тук е
- употреба MySQL като мета хранилище в backend-а за свързване на множество потребители с Hive едновременно
- MySQL е най-добрият избор за самостоятелния метахранилище
Как да инсталирате и конфигурирате Hive Metastore за MySQL База данни
Деветте стъпки по-долу се изпълняват последователно на машина, на която вече са инсталирани Hadoop и Hive. Всяка стъпка завършва със екранна снимка на действителния изход на терминала или обвивката.
Стъпка 1) Инсталирайте MySQL Сървър
В тази стъпка ще изпълним две задачи
- Инсталиране на mysql сървър
- Проверка на mysql сървъра и неговия процес
Използване на sudo apt-get инсталирате mysql-сървър команда, можем да изтеглим MySQL сървър. Инсталиране MySQL както е показано на екранната снимка по-долу.
След успешна инсталация, MySQL ще се изпълни както е показано на екранната снимка по-долу, където проверката на процеса потвърждава, че услугата е активна.
Стъпка 2) Инсталирайте MySQL Java Съединител
Инсталиране на MySQL Java конектор. Това е за Java зависимости и цели на свързване, защото Hive достига MySQL през JDBC. Следващата екранна снимка показва инсталирането на пакета.
Стъпка 3) Създайте мека връзка за конектор
Създаване на мека връзка за конектора в директорията на Hive lib. Това е меката връзка между Java намлява MySQL, и това е, което поставя JAR файла на драйвера в пътя на класовете на Hive. Командата и нейният резултат са показани по-долу.
Стъпка 4) Конфигуриране MySQL съхранение в Hive
- MySQL Shell трябва да бъде отворен като root акаунт, преди да може да бъде създаден потребител на Hive, както е показано по-долу.
- Въведете 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 режим на черупка
Базата данни с метахранилища се избира първо, а таблицата, която следва, е показана по-долу.
От горната екранна снимка можем да наблюдаваме следното
- Първо трябва да изберем базата данни с „използване на metastore“
- След като метахранилището е избрано, можем да проверим таблиците в него, като използваме командата „show tables“, както е показано на екранната снимка.
- Каквито и таблици да бъдат създадени в Hive, метаданните, съответстващи на тези таблици, се съхраняват под TBLS в MySQL база данни
- Таблицата „guru99“ е създадена в Hive, така че съответните метаданни се съхраняват в MySQL под TBLS
Стъпка 9) Въведете select * от TBLS
Проверка дали създадената таблица е налична в MySQL или не. Заявката и нейният резултат се показват на екранната снимка по-долу.
Като въведете select * от TBLS, ще се покажат таблиците, които създадохме в режим на Hive shell
От горната екранна снимка можем да наблюдаваме следните неща:
- Името на таблицата „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 |
| -инфо | Докладва версията на схемата, записана в базата данни |
| -upgradeSchema | Мигрира съществуваща схема след надстройка на 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, така и за хоста със заместващ символ, след което изпълнете flush привилегиите. |
| Синтаксична грешка близо до IDENTIFICED BY | MySQL 8 премахна IDENTIFIED BY от оператора GRANT. Първо издайте CREATE USER и след това GRANT |
| Извличането на публичен ключ не е разрешено | Connector/J 8 отказва некриптирано ръкостискане по подразбиране. Добавете useSSL=false и allowPublicKeyRetrieval=true към JDBC. URL в надеждна мрежа |
| Таблиците липсват след надстройка на Hive | Схемата все още съответства на старата версия. Стартирайте schematool с -upgradeSchema, вместо да деактивирате проверката на схемата. |
След като метахранилището отговори надеждно, дефинициите на таблиците, които то записва, се създават с операторите, описани в Създаване, промяна и премахване на таблица в Hive.








