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 obsahuje: Metastore uchovรกvรก metadata schรฉmatu v relaฤnรญch tabulkรกch, zatรญmco samotnรก data tabulky zลฏstรกvajรญ na HDFS.
  • ๐Ÿšซ Proฤ Derby selhรกvรก: Souฤรกstรญ balรญฤku Derby metastore je jedna aktivnรญ relace, coลพ ji vyluฤuje pro jakรฝkoli sdรญlenรฝ nebo produkฤnรญ cluster.
  • ๐Ÿ”ง ฤŒtyล™i nemovitosti: Pล™รญpojkaURL, ConnectionDriverName, ConnectionUserName a ConnectionPassword v souboru hive-site.xml ukazujรญ na Hive na MySQL.
  • ๐Ÿ”— Umรญstฤ›nรญ ล™idiฤe: Jedno MySQL Konektor JDBC musรญ bรฝt propojen s adresรกล™em Hive lib, neลพ bude jakรฝkoli pokus o pล™ipojenรญ รบspฤ›ลกnรฝ.
  • ๐Ÿงฑ Schรฉma jako prvnรญ: Nรกstroj schematool vytvรกล™รญ tabulky metastore a Hive se odmรญtรก spustit s neinicializovanรฝm schรฉmatem.
  • ๐Ÿ”Ž Ovฤ›ล™it v MySQL: Tabulka vytvoล™enรก v Hive se okamลพitฤ› zobrazรญ jako ล™รกdek v tabulce TBLS v databรกzi metastore.

Jak nainstalovat a nakonfigurovat metaรบloลพiลกtฤ› Hive pomocรญ MySQL

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

  1. Instalace mysql-serveru
  2. 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.

Terminรกl se spuลกtฤ›nรฝm pล™รญkazem sudo apt-get install mysql-server na Ubuntu

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รก.

Terminรกl potvrzujรญcรญ spuลกtฤ›nรญ procesu mysql-server po instalaci

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.

Terminรกl s instalacรญ libmysql-java MySQL Java konektorovรฝ balรญฤek

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.

Terminรกl vytvรกล™ejรญcรญ soft link pro MySQL JAR konektoru v adresรกล™i Hive lib

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.

Otevล™enรญ terminรกlu MySQL shell s pล™รญkazem mysql -u root -p

  • 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.

MySQL shell vytvรกล™ejรญcรญ รบฤet hiveuser a udฤ›lujรญcรญ oprรกvnฤ›nรญ

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.

Terminรกl otevรญrรก soubor hive-site.xml pro รบpravy v adresรกล™i Hive conf.

Nรกsledujรญcรญ snรญmek obrazovky ukazuje hotovรฝ soubor se vลกemi ฤtyล™mi vlastnostmi.

Soubor hive-site.xml zobrazujรญcรญ ฤtyล™i vlastnosti pล™ipojenรญ javax.jdo.option

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รญ:

  1. 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ฤ›.
  2. 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.
  3. 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.
  4. 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.

Hive shell vytvรกล™รญ tabulku guru99 s celรฝm ฤรญslem a ล™etฤ›zcovรฝm sloupcem

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.

MySQL Spuลกtฤ›nรญ shellu pomocรญ metastore a show tables vypรญลกe tabulky metastore

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.

MySQL Spuลกtฤ›nรญ pล™รญkazu select * z TBLS a zobrazenรญ ล™รกdku tabulky guru99

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.

Nejฤastฤ›jลกรญ dotazy

Podpora lodรญ Hive pro Derby, MySQL, PostgreSQL, Oracle a Microsoft SQL Servera schematool je pล™ijรญmรก pomocรญ pล™รญznaku -dbType. Derby zลฏstรกvรก vรฝchozรญ a omezeno na jednu relaci.

Embedded spouลกtรญ Derby uvnitล™ procesu Hive. Local spouลกtรญ kรณd metastore uvnitล™ Hive, ale s externรญ databรกzรญ, jako je napล™รญklad MySQLVzdรกlenรก sluลพba spouลกtรญ metastore jako vlastnรญ sluลพbu Thrift, kterou sdรญlรญ nฤ›kolik klientลฏ.

Databรกze zรกznamลฏ DBS, tabulky zรกznamลฏ TBLS, definice sloupcลฏ zรกznamลฏ COLUMNS_V2, deskriptory รบloลพiลกtฤ› zรกznamลฏ SDS a poloลพky oddรญlลฏ zรกznamลฏ PARTITIONS. Tyto nรกzvy jsou internรญ, proto je radฤ›ji dotazujte pro kontrolu, neลพ je upravujte ruฤnฤ›.

Uloลพte jej do รบloลพiลกtฤ› klรญฤลฏ poskytovatele povฤ›ล™enรญ Hadoop a ukaลพte hive.metastore.credential.provider.path na tento soubor, potรฉ odeberte prostou hodnotu. Minimรกlnรญm ล™eลกenรญm je omezenรญ oprรกvnฤ›nรญ k souboru hive-site.xml.

Soubory na HDFS pล™eลพijรญ, ale kaลพdรก definice tabulky, oddรญlu a sloupce zmizรญ a Hive je uลพ nemลฏลพe ฤรญst. Regular MySQL Vรฝpisy databรกze metastore jsou proto souฤรกstรญ bฤ›ลพnรฉho zรกlohovรกnรญ clusteru.

Sluลพba Thrift metastore ve vรฝchozรญm nastavenรญ naslouchรก na portu 9083, kterรฝ je nastaven pomocรญ hive.metastore.port. Klienti se k nรญ pล™ipojujรญ pomocรญ hive.metastore.uris, nikoli pomocรญ pล™รญmรฝch pล™ihlaลกovacรญch รบdajลฏ JDBC, coลพ chrรกnรญ klientskรฉ poฤรญtaฤe pล™ed heslem databรกze.

Ano. Detekce anomรกliรญ v protokolech dotazลฏ metastore signalizuje nรกhlรฉ ลกpiฤky volรกnรญ, pomalรฉ vรฝpisy oddรญlลฏ a nekontrolovanรฝ rลฏst tabulek pล™ed vyprลกenรญm ฤasovรฉho limitu รบloh. Model zvรฝraznรญ kandidรกty a administrรกtor stรกle potvrdรญ pล™รญฤinu.

Copilot vytvoล™รญ blok vlastnostรญ javax.jdo.option z krรกtkรฉho komentรกล™e a agenti-asistentovรฉ mohou celรฉ nastavenรญ skriptovat. Ovฤ›ล™te tล™รญdu ovladaฤe a port, protoลพe trรฉnovacรญ data stรกle upล™ednostลˆujรญ starลกรญ nรกzev konektoru.

Shrลˆte tento pล™รญspฤ›vek takto: