Jak nainstalovat a nakonfigurovat HIVE Metastore s MYSQL
โก Chytrรฉ shrnutรญ
Metastore Hive uklรกdรก kaลพdou definici tabulky, nรกzev sloupce a datovรฝ typ za Apache Hive a pลesouvรก tento repozitรกล z vรฝchozรญ databรกze Derby do MySQL coลพ umoลพลuje pลipojenรญ nฤkolika uลพivatelลฏ najednou.

Co je HIVE Metastore?
Hive metastore je repozitรกล, kterรฝ uklรกdรก metadata (nรกzvy sloupcลฏ, datovรฉ typy, komentรกลe atd.) souvisejรญcรญ s รl Apache pouลพitรญm MySQL or PostgreSQL. Toto metaรบloลพiลกtฤ Hive je implementovรกno pomocรญ tabulek v relaฤnรญ databรกzi.
V metaรบloลพiลกti nic neobsahuje samotnรฉ ลรกdky. Zรกznamy zลฏstรกvajรญ v HDFS a metaรบloลพiลกtฤ zaznamenรกvรก pouze to, kde se kterรก tabulka nachรกzรญ a jak se nazรฝvajรญ jejรญ sloupce, a proto ztrรกta tฤchto dat stojรญ spรญลกe schรฉma neลพ data.
Proฤ pouลพรญvat MySQL v Hive jako Metastore
Backend metastore je volbou, nikoli pevnou souฤรกstรญ Hive, a dodรกvanรก vรฝchozรญ hodnota je zรกmฤrnฤ minimรกlnรญ. Tลi omezenรญ od nฤj odvรกdฤjรญ tรฉmฤล kaลพdou instalaci.
- Ve vรฝchozรญm nastavenรญ je Hive dodรกvรกn s databรกzรญ Derby jako metaรบloลพiลกtฤm.
- Derby mลฏลพe podporovat pouze jednoho aktivnรญho uลพivatele v danรฉm okamลพiku.
- Derby se nedoporuฤuje v produkฤnรญm prostลedรญ.
Takลพe ลeลกenรญ je zde
- Pouลพijte MySQL jako meta รบloลพiลกtฤ na backendu pro pลipojenรญ vรญce uลพivatelลฏ k Hive souฤasnฤ
- MySQL je nejlepลกรญ volbou pro samostatnรฝ metastore
Jak nainstalovat a nakonfigurovat Hive Metastore MySQL Databรกze
Devฤt nรญลพe uvedenรฝch krokลฏ se provรกdรญ postupnฤ na poฤรญtaฤi, na kterรฉm je jiลพ nainstalovรกn Hadoop a Hive. Kaลพdรฝ krok konฤรญ snรญmkem obrazovky skuteฤnรฉho vรฝstupu terminรกlu nebo shellu.
Krok 1) Nainstalujte MySQL Server
V tomto kroku provedeme dva รบkoly
- Instalace mysql-serveru
- Kontrola mysql-serveru a jeho procesu
Za pouลพitรญ sudo apt-get nainstalovat mysql-server pลรญkaz, mลฏลพeme si stรกhnout MySQL server. Instalace MySQL jak je znรกzornฤno na snรญmku obrazovky nรญลพe.
Po รบspฤลกnรฉ instalaci, MySQL probฤhne, jak je znรกzornฤno na snรญmku obrazovky nรญลพe, kde kontrola procesu potvrdรญ, ลพe je sluลพba spuลกtฤnรก.
Krok 2) Nainstalujte MySQL Java konektor
Instalace MySQL Java konektor. Toto je pro Java zรกvislosti a รบฤely pลipojenรญ, protoลพe Hive dosahuje MySQL pลes JDBC. Nรกsledujรญcรญ snรญmek obrazovky ukazuje instalaci balรญฤku.
Krok 3) Vytvoลte mฤkkรฝ odkaz pro konektor
Vytvoลenรญ softwarovรฉho odkazu pro konektor v adresรกลi Hive lib. Toto je softwarovรฝ odkaz mezi Java a MySQL, a to je to, co umรญstรญ JAR ovladaฤe do tลรญdnรญ cesty Hive. Pลรญkaz a jeho vรฝsledek jsou uvedeny nรญลพe.
Krok 4) Konfigurace MySQL รบloลพiลกtฤ v Hive
Jedno MySQL Pลed vytvoลenรญm jakรฉhokoli uลพivatele Hive je nutnรฉ otevลรญt shell jako root รบฤet, jak je znรกzornฤno dรกle.
- Zadejte mysql โu root โp a potรฉ heslo.
- Zde โu pลedstavuje uลพivatelskรฉ jmรฉno root a โp oznaฤuje heslo.
- Po zadรกnรญ vรฝลกe uvedenรฉho pลรญkazu musรญ uลพivatel zadat platnรฉ heslo a potรฉ stisknout klรกvesu Enter.
- Pak vstoupรญ do MySQL shellovรฝ reลพim
Krok 5) Vytvoลte uลพivatelskรฉ jmรฉno a heslo
Vytvoลenรญ uลพivatelskรฉho jmรฉna a hesla pro MySQLa udฤlenรญ oprรกvnฤnรญ. Snรญmek obrazovky nรญลพe ukazuje tลi pลรญkazy spuลกtฤnรฉ uvnitล MySQL skoลรกpky.
Musรญme provรฉst pลรญkazy, jak je uvedeno nรญลพe,
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8 kombinovanรก forma druhรฉho pลรญkazu se jiลพ neanalyzuje, protoลพe IDENTIFIED BY byl z pลรญkazu GRANT odstranฤn. Nejprve vytvoลte รบฤet a potรฉ mu udฤlte oprรกvnฤnรญ a opakujte ลรกdek CREATE USER pro hostitele localhost i pro hostitele se zรกstupnรฝm znakem.
Krok 6) Konfigurace souboru hive-site.xml
- Po kroku 5 pลiลadรญ uลพivatelskรฉ jmรฉno a heslo MySQL databรกzi a udฤluje oprรกvnฤnรญ.
- Zde nakonfigurujeme nฤkterรฉ vlastnosti v Hive pro zรญskรกnรญ pลipojenรญ k MySQL databรกze.
Konfiguraฤnรญ soubor se otevรญrรก z adresรกลe Hive conf, jak ukazuje nรกsledujรญcรญ snรญmek obrazovky.
Nรกsledujรญcรญ snรญmek obrazovky ukazuje hotovรฝ soubor se vลกemi ฤtyลmi vlastnostmi.
Z vรฝลกe uvedenรฉho snรญmku obrazovky pozorujeme nรกsledujรญcรญ. Zde definujeme 4 vlastnosti, kterรฉ jsou nezbytnรฉ pro stanovenรญ MySQL jako metaรบloลพiลกtฤ v Hive.
Jednรก se o nรกsledujรญcรญ:
- Tato vlastnost je pro pลipojenรญ URLZde definujeme pลipojenรญ.URL v tรฉto vlastnosti. Funguje jako pลipojovacรญ ลetฤzec JDBC a takรฉ pลedstavuje umรญstฤnรญ metaรบloลพiลกtฤ.
- Tato vlastnost je pro nรกzev ovladaฤe pลipojenรญ. Zde je com.mysql.jdbc.Driver hodnota, kterou musรญme uvรฉst v tagu value.
- Tato vlastnost se pouลพรญvรก k definovรกnรญ uลพivatelskรฉho jmรฉna pro pลipojenรญ. V tomto pลรญpadฤ jsme definovali โhiveuserโ jako uลพivatelskรฉ jmรฉno.
- Tato vlastnost se pouลพรญvรก k zadรกnรญ hesla pro pลipojenรญ. V tomto pลรญpadฤ jsme definovali โhivepasswordโ jako heslo uลพivatele.
Jakmile jsou vlastnosti umรญstฤny v souboru hive-site.xml, musรญme soubor ruฤnฤ uloลพit (Ctrl+S) a zavลรญt. Po zavลenรญ tohoto souboru musรญme vytvoลit tabulku Hive a zkontrolovat podrobnosti tabulky v MySQL รบloลพnรฝ prostor.
Umรญstฤte tento kรณd do souboru 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>
Dvฤ vรฝลกe uvedenรฉ hodnoty zรกvisรญ na pouลพitรฉ verzi konektoru. MySQL Connector/J 8 pลejmenoval tลรญdu ovladaฤe na com.mysql.cj.jdbc.Driver a takรฉ oฤekรกvรก explicitnรญ nastavenรญ portu a SSL, takลพe modernรญ URL obvykle znรญ jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Protoลพe heslo je v prostรฉm textu, mฤl by bรฝt soubor ฤitelnรฝ pouze pro รบฤet sluลพby Hive.
Krok 7) Vytvoลte tabulku
Vytvoลte v Hive tabulku โguru99โ, jak je znรกzornฤno v shellu Hive nรญลพe.
Z vรฝลกe uvedenรฉho snรญmku obrazovky mลฏลพeme pozorovat nรกsledujรญcรญ
- Vytvoลenรญ tabulky s nรกzvem โguru99โ se dvฤma nรกzvy sloupcลฏ
- Nรกzvy sloupcลฏ jsou uvedeny s jejich datovรฝmi typy, jeden je celรฉ ฤรญslo a druhรฝ je ลetฤzec.
V dalลกรญm kroku zkontrolujeme, zda je uloลพen v MySQL nebo ne.
Krok 8) Vstupte do MySQL shellovรฝ reลพim
Databรกze metastore je vybrรกna jako prvnรญ a nรญลพe je zobrazen nรกsledujรญcรญ tabulkovรฝ vรฝpis.
Z vรฝลกe uvedenรฉho snรญmku obrazovky mลฏลพeme pozorovat nรกsledujรญcรญ
- Nejprve musรญme vybrat databรกzi pomocรญ โpouลพรญt metastoreโ.
- Jakmile je metastore vybrรกno, mลฏลพeme zkontrolovat tabulky v nฤm obsaลพenรฉ pomocรญ pลรญkazu โshow tablesโ, jak je znรกzornฤno na snรญmku obrazovky.
- Aลฅ uลพ jsou v Hive vytvoลeny jakรฉkoli tabulky, metadata odpovรญdajรญcรญ tฤmto tabulkรกm jsou uloลพena v TBLS v MySQL databรกze
- Tabulka โguru99โ je vytvoลena v Hive, takลพe odpovรญdajรญcรญ metadata jsou uloลพena v MySQL pod TBLS
Krok 9) Zadejte vybrat * z TBLS
Kontrola, zda je vytvoลenรก tabulka pลรญtomna v MySQL nebo ne. Dotaz a jeho vรฝsledek se zobrazujรญ na snรญmku obrazovky nรญลพe.
Zadรกnรญm select * z TBLS se zobrazรญ tabulky, kterรฉ jsme vytvoลili v reลพimu Hive shell
Z vรฝลกe uvedenรฉho snรญmku obrazovky mลฏลพeme pozorovat nรกsledujรญcรญ vฤci:
- Nรกzev tabulky โguru99โ, kterรก byla vytvoลena v Hive, lze zobrazit v MySQL shellovรฝ reลพim
- Kromฤ toho bude takรฉ poskytovat informace, jako je ฤas vytvoลenรญ tabulky, ฤas pลรญstupu a dalลกรญ vlastnosti, jak je znรกzornฤno na snรญmku obrazovky vรฝลกe.
Jak inicializovat schรฉma Hive Metastore pomocรญ schematool
Pลรญznak createDatabaseIfNotExist v pลipojenรญ URL vytvoลรญ prรกzdnou databรกzi metastore, ale nevytvoลรญ zhruba sedmdesรกt tabulek, kterรฉ Hive v nรญ oฤekรกvรก. V Hive 1.x a novฤjลกรญch verzรญch patลรญ tato รบloha nรกstroji schematool a pลeskoฤรญ ji.ping Je to nejฤastฤjลกรญ dลฏvod, proฤ se ฤerstvฤ nakonfigurovanรฉ metastore odmรญtรก spustit.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
Pลรญkaz naฤte stejnรฉ ฤtyลi vlastnosti ze souboru hive-site.xml, pลipojรญ se k รบฤtu hiveuser a spustรญ dodanรฝ SQL skript, kterรฝ odpovรญdรก verzi Hive. รspฤลกnรฉ spuลกtฤnรญ konฤรญ zprรกvou o dokonฤenรญ, po kterรฉ lze stav kdykoli potvrdit.
$HIVE_HOME/bin/schematool -dbType mysql -info
Nรญลพe uvedenรฉ pลรญznaky pokrรฝvajรญ celou dobu ลพivotnosti schรฉmatu metastore.
| Volba | Co to dฤlรก |
|---|---|
| -dbType | Pojmenovรกvรก backend, napลรญklad mysql, derby, postgres, oracle nebo mssql |
| -initSchema | Vytvoลรญ tabulky metastore pro aktuรกlnรญ verzi Hive. |
| -info | Hlรกsรญ verzi schรฉmatu zaznamenanou v databรกzi. |
| -upgradeSchema | Migruje existujรญcรญ schรฉma po upgradu Hive. |
| -ovฤลit | Kontroluje schรฉma, zda nechybรญ tabulky a verze nesouladลฏ. |
Pลed prvnรญm spuลกtฤnรญm je dobrรฉ znรกt jednu souvisejรญcรญ vlastnost. Pokud je vlastnost hive.metastore.schema.verification nastavena na hodnotu true, Hive porovnรก verzi schรฉmatu v MySQL proti svรฝm vlastnรญm a odmรญtรก se spustit pลi neshodฤ. Tato kontrola je ochranou, takลพe sprรกvnou reakcรญ je spustit aktualizaci, nikoli ji vypnout. Stejnรฉ MySQL Backend je pouลพรญvรกn instalacรญ Hive popsanou v nainstalujte Hive na Ubuntu.
Bฤลพnรฉ chyby v metaรบloลพiลกti Hive a jak je opravit
Vฤtลกina selhรกnรญ v tรฉto fรกzi vygeneruje jednu z mรกla zprรกv a kaลพdรก ukazuje na konkrรฉtnรญ krok vรฝลกe, nikoli na samotnรฝ Hive.
| Pลรญznak | Pลรญฤina a oprava |
|---|---|
| Informace o verzi nebyly v metastore nalezeny. | Schรฉma nebylo nikdy vytvoลeno. Spusลฅte schematool s parametrem -initSchema pro stejnou databรกzi, kterรก je uvedena v pลipojenรญ. URL |
| Vรฝjimka ClassNotFoundException pro ovladaฤ JDBC | V adresรกลi Hive lib chybรญ soubor JAR konektoru nebo se pouลพรญvรก Connector/J 8 a tลรญda je nynรญ com.mysql.cj.jdbc.Driver. Znovu zkontrolujte softwarovรฝ odkaz z kroku 3. |
| Uลพivateli hiveuser byl odepลen pลรญstup. | Oprรกvnฤnรญ byla udฤlena pouze jednomu hostiteli. Vytvoลte รบฤet pro localhost i pro hostitele se zรกstupnรฝm znakem a potรฉ spusลฅte vyprรกzdnฤnรญ oprรกvnฤnรญ. |
| Syntaktickรก chyba poblรญลพ IDENTIFIKOVรNO | MySQL Z pลรญkazu GRANT byl odstranฤn parametr IDENTIFIED BY. Nejprve zadejte pลรญkaz CREATE USER a potรฉ pลรญkaz GRANT. |
| Zรญskรกnรญ veลejnรฉho klรญฤe nenรญ povoleno | Connector/J 8 ve vรฝchozรญm nastavenรญ odmรญtรก neลกifrovanรฉ navazovรกnรญ spojenรญ (handshake). Pลidejte do JDBC parametry useSSL=false a allowPublicKeyRetrieval=true. URL v dลฏvฤryhodnรฉ sรญti |
| Po upgradu Hive chybรญ tabulky. | Schรฉma stรกle odpovรญdรก starรฉ verzi. Spusลฅte schematool s parametrem -upgradeSchema mรญsto zakรกzรกnรญ ovฤลovรกnรญ schรฉmatu. |
Jakmile metaรบloลพiลกtฤ spolehlivฤ odpovรญ, zaznamenanรฉ definice tabulek se vytvoลรญ pomocรญ pลรญkazลฏ popsanรฝch v Vytvรกลenรญ, รบprava a odstraลovรกnรญ tabulek v Hive.








