Kako instalirati i konfigurirati HIVE Metastore s MYSQL-om

โšก Pametni saลพetak

Hive metastore pohranjuje svaku definiciju tablice, naziv stupca i tip podataka iza Apache Hivea i premjeลกta taj repozitorij iz zadane Derby baze podataka u MySQL ลกto omoguฤ‡uje istovremenu vezu nekoliko korisnika.

  • ๐Ÿ—„๏ธ ล to sadrลพi: Metastore ฤuva metapodatke sheme u relacijskim tablicama, dok sami podaci tablice ostaju na HDFS-u.
  • ???? Zaลกto Derby ne uspijeva: U paketu je Derby metastore koji prihvaฤ‡a jednu aktivnu sesiju, ลกto ga iskljuฤuje za bilo koji dijeljeni ili produkcijski klaster.
  • ๐Ÿ”ง ฤŒetiri nekretnine: prikljuฤakURL, ConnectionDriverName, ConnectionUserName i ConnectionPassword u hive-site.xml pokazuju Hive na MySQL.
  • ๐Ÿ”— Poloลพaj vozaฤa: The MySQL JDBC konektor mora biti povezan s direktorijem Hive lib prije nego ลกto bilo koji pokuลกaj povezivanja uspije.
  • ๐Ÿงฑ Prva shema: Usluลพni program schematool stvara metastore tablice, a Hive odbija pokrenuti se protiv neinicijalizirane sheme.
  • ๐Ÿ”Ž Potvrdi u MySQL: Tablica kreirana u Hiveu odmah se pojavljuje kao red u TBLS tablici metastore baze podataka.

Kako instalirati i konfigurirati Hive metastore s MySQL

ล to je HIVE Metastore?

Hive metastore je repozitorij koji pohranjuje metapodatke (imena stupaca, tipove podataka, komentare itd.) povezane s Apache koลกnica koristeฤ‡i MySQL or PostgreSQL. Ovo Hive metastore implementirano je pomoฤ‡u tablica u relacijskoj bazi podataka.

Niลกta u metastoreu ne sadrลพi same retke. Zapisi ostaju na HDFS-u, a metastore biljeลพi samo gdje se nalazi svaka tablica i kako se zovu njezini stupci, zbog ฤega gubitak koลกta shemu, a ne podatke.

Zaลกto koristiti MySQL u Hiveu kao Metastore

Pozadinski sustav metastorea je izbor, a ne fiksni dio Hivea, a isporuฤeni zadani parametri su namjerno minimalistiฤki. Tri ograniฤenja gotovo svaku instalaciju udaljavaju od njega.

  • Prema zadanim postavkama, Hive dolazi s Derby bazom podataka kao metastoreom.
  • Derby moลพe podrลพati samo jednog aktivnog korisnika u danom trenutku.
  • Derby se ne preporuฤuje u produkcijskom okruลพenju.

Dakle, rjeลกenje ovdje je

  • Koristiti MySQL kao meta pohrana na pozadini za istovremeno povezivanje viลกe korisnika s Hiveom
  • MySQL je najbolji izbor za samostalnu metastore

Kako instalirati i konfigurirati Hive Metastore za MySQL Baza podataka

Devet koraka u nastavku izvrลกava se redom na raฤunalu na kojem su veฤ‡ instalirani Hadoop i Hive. Svaki korak zavrลกava snimkom zaslona stvarnog terminala ili izlaza ljuske.

Korak 1) Instalirajte MySQL Server
U ovom koraku izvrลกit ฤ‡emo dva zadatka

  1. Instalacija mysql-servera
  2. Provjera mysql-posluลพitelja i njegovog procesa

Koriลกtenje sudo apt-get install mysql-posluลพitelj naredbu, moลพemo preuzeti MySQL posluลพitelj. Instaliraj MySQL kao ลกto je prikazano na snimci zaslona ispod.

Terminal s pokrenutim sudo apt-get install mysql-server naredbom Ubuntu

Nakon uspjeลกne instalacije, MySQL ฤ‡e se pokrenuti kao ลกto je prikazano na snimci zaslona ispod, gdje provjera procesa potvrฤ‘uje da je usluga aktivna.

Terminal koji potvrฤ‘uje da se proces mysql-server izvodi nakon instalacije

Korak 2) Instalirajte MySQL Java konektor
Instaliranje MySQL Java konektor. Ovo je za Java ovisnosti i svrhe povezivanja, jer Hive doseลพe MySQL preko JDBC-a. Sljedeฤ‡a snimka zaslona prikazuje instalaciju paketa.

Terminal koji instalira libmysql-java MySQL Java paket konektora

Korak 3) Stvorite meku vezu za konektor
Izrada softverske poveznice za konektor u direktoriju Hive lib. Ovo je softverska poveznica izmeฤ‘u Java i MySQL, i to je ono ลกto stavlja JAR upravljaฤkog programa na put klase Hive. Naredba i njezin rezultat prikazani su u nastavku.

Terminal stvara soft link za MySQL JAR konektora u direktoriju Hive lib

Korak 4) Konfiguriranje MySQL skladiลกtenje u Hiveu
The MySQL Shell se mora otvoriti kao root raฤun prije nego ลกto se moลพe kreirati bilo koji Hive korisnik, kao ลกto je prikazano u nastavku.

Otvaranje terminala MySQL shell s naredbom mysql -u root -p

  • Upiลกite mysql โ€“u root โ€“p, a zatim lozinku
  • Ovdje -u predstavlja root korisniฤko ime, a -p oznaฤava lozinku.
  • Nakon unosa gornje naredbe, korisnik mora unijeti valjanu lozinku, a zatim pritisnuti enter
  • Tada ฤ‡e uฤ‡i u MySQL reลพim ljuske

Korak 5) Stvorite korisniฤko ime i lozinku
Izrada korisniฤkog imena i lozinke za MySQLi dodjeljivanje privilegija. Snimka zaslona u nastavku prikazuje tri naredbe koje se izvode unutar MySQL ljuska.

MySQL ljuska koja stvara hiveuser raฤun i dodjeljuje privilegije

Moramo izvrลกiti naredbe kao ลกto je prikazano u nastavku,

mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; 
mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword';
mysql>  flush privileges;

On MySQL Kombinirani oblik druge naredbe viลกe se ne parsira jer je IDENTIFIED BY uklonjen iz GRANT. Prvo stvorite raฤun, a zatim mu dodijelite dozvolu i ponovite redak CREATE USER za localhost host kao i za wildcard host.

Korak 6) Konfiguriranje hive-site.xml datoteke

  • Nakon ลกto 5. korak dodijeli korisniฤko ime i lozinku MySQL bazu podataka i dodjeljuje privilegije.
  • Ovdje ฤ‡emo konfigurirati neka svojstva u Hiveu kako bismo dobili vezu s MySQL baza podataka.

Konfiguracijska datoteka se otvara iz Hive conf direktorija, kao ลกto je prikazano na sljedeฤ‡oj snimci zaslona.

Terminal otvara hive-site.xml za ureฤ‘ivanje u Hive conf direktoriju

Sljedeฤ‡a snimka zaslona prikazuje gotovu datoteku sa sva ฤetiri svojstva na mjestu.

hive-site.xml koji prikazuje ฤetiri svojstva povezivanja javax.jdo.option

Iz gornje snimke zaslona vidimo sljedeฤ‡e. Ovdje definiramo 4 svojstva koja su potrebna za uspostavljanje MySQL kao metastore u Hiveu.

To su kako slijedi:

  1. Ovo svojstvo je za vezu URLOvdje definiramo VezuURL u ovom svojstvu. Djeluje kao JDBC niz za povezivanje i predstavlja lokaciju metastore-a.
  2. Ovo svojstvo je za naziv upravljaฤkog programa veze. Ovdje je com.mysql.jdbc.Driver vrijednost koju moramo spomenuti u oznaci vrijednosti.
  3. Ovo svojstvo se koristi za definiranje korisniฤkog imena za vezu. Ovdje smo definirali "hiveuser" kao korisniฤko ime.
  4. Ovo svojstvo se koristi za spominjanje lozinke za povezivanje. Ovdje smo definirali โ€žhivepasswordโ€œ kao korisniฤku lozinku.

Nakon ลกto su svojstva smjeลกtena u hive-site.xml, moramo ruฤno spremiti (Ctrl+S) i zatvoriti datoteku. Nakon zatvaranja ove datoteke, moramo stvoriti Hive tablicu i provjeriti detalje tablice u MySQL skladiลกtenje.

Postavite ovaj kod u hive-site.xml

stranica-koลกnice.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>

Dvije gore navedene vrijednosti ovise o verziji konektora koja se koristi. MySQL Connector/J 8 je preimenovao klasu upravljaฤkog programa u com.mysql.cj.jdbc.Driver, a takoฤ‘er oฤekuje eksplicitnu postavku porta i SSL-a, tako da moderni URL obiฤno glasi jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Buduฤ‡i da se lozinka nalazi u ฤistom tekstu, datoteka bi trebala biti ฤitljiva samo raฤunu Hive servisa.

Korak 7) Napravite tablicu
Napravite tablicu โ€žguru99โ€œ u Hiveu, kao ลกto je prikazano u Hive ljusci ispod.

Hive shell kreira tablicu guru99 s cijelim brojem i stupcem tipa string

Iz gornje snimke zaslona moลพemo vidjeti sljedeฤ‡e

  • Izrada tablice pod nazivom โ€žguru99โ€œ s dva naziva stupaca
  • Imena stupaca navedena su s njihovim tipovima podataka, jedan je cijeli broj, a drugi niz znakova.

U sljedeฤ‡em koraku provjerit ฤ‡emo je li pohranjeno u MySQL ili ne.

Korak 8) Uฤ‘ite u MySQL reลพim ljuske
Prvo se odabire metastore baza podataka, a popis tablice koji slijedi prikazan je u nastavku.

MySQL Izvoฤ‘enje ljuske koristi metastore i show tables za popis metastore tablica

Iz gornje snimke zaslona moลพemo vidjeti sljedeฤ‡e

  • Prvo moramo odabrati bazu podataka s "use metastore"
  • Nakon ลกto je metastore odabran, moลพemo provjeriti tablice u njemu pomoฤ‡u naredbe "show tables" kao ลกto je prikazano na snimci zaslona.
  • Bez obzira na to koje se tablice kreiraju u Hiveu, metapodaci koji odgovaraju tim tablicama pohranjuju se pod TBLS-om u MySQL baza podataka
  • Tablica โ€žguru99โ€œ je kreirana u Hiveu, pa su odgovarajuฤ‡i metapodaci pohranjeni u MySQL pod TBLS-om

Korak 9) Unesite select * iz TBLS
Provjera je li kreirana tablica prisutna u MySQL ili ne. Upit i njegov rezultat prikazani su na snimci zaslona ispod.

MySQL shell pokreฤ‡e select * iz TBLS-a i prikazuje redak tablice guru99

Unosom select * from TBLS, prikazat ฤ‡e se tablice koje smo stvorili u Hive shell modu

Iz gornje snimke zaslona moลพemo vidjeti sljedeฤ‡e stvari:

  • Naziv tablice โ€žguru99โ€œ koja je kreirana u Hiveu moลพe se prikazati u MySQL reลพim ljuske
  • Osim toga, pruลพit ฤ‡e i informacije poput vremena stvaranja tablice, vremena pristupa i drugih svojstava kao ลกto je prikazano na gornjoj snimci zaslona.

Kako inicijalizirati shemu Hive Metastore pomoฤ‡u schematoola

Zastavica createDatabaseIfNotExist u vezi URL stvara praznu metastore bazu podataka, ali ne stvara otprilike sedamdeset tablica koje Hive oฤekuje unutar nje. Na Hiveu 1.x i novijim verzijama taj posao pripada usluลพnom programu schematool i preskoฤiping To je najฤeลกฤ‡i razlog zaลกto se novokonfigurirani metastore odbija pokrenuti.

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

Naredba ฤita ista ฤetiri svojstva iz hive-site.xml, povezuje se s hiveuser raฤunom i pokreฤ‡e priloลพeni SQL skript koji odgovara Hive verziji. Uspjeลกno pokretanje zavrลกava porukom o zavrลกetku, nakon ฤega se stanje moลพe potvrditi u bilo kojem trenutku.

$HIVE_HOME/bin/schematool -dbType mysql -info

Zastavice u nastavku pokrivaju cijeli ลพivotni ciklus sheme metastore-a.

opcija Ono ลกto se takoฤ‘er
-dbType Imenuje pozadinski sustav, kao ลกto su mysql, derby, postgres, oracle ili mssql
-initSchema Stvara metastore tablice za trenutnu verziju Hivea
-info Izvjeลกtava o verziji sheme zabiljeลพenoj u bazi podataka
-shema nadogradnje Migrira postojeฤ‡u shemu nakon nadogradnje Hivea
-validirati Provjerava shemu za nedostajuฤ‡e tablice i neusklaฤ‘enosti verzija

Jedno povezano svojstvo vrijedi znati prije prvog pokretanja. Kada je hive.metastore.schema.verification postavljeno na true, Hive usporeฤ‘uje verziju sheme u MySQL protiv vlastitog i odbija pokrenuti se pri neusklaฤ‘enosti. Ta provjera je zaลกtita, pa je ispravan odgovor pokrenuti nadogradnju umjesto iskljuฤiti je. Isto MySQL Backend koristi Hive instalacija obuhvaฤ‡ena instalirajte Hive na Ubuntu.

Uobiฤajene pogreลกke Hive Metastorea i kako ih ispraviti

Veฤ‡ina neuspjeha u ovoj fazi proizvodi jednu od nekoliko poruka, a svaka ukazuje na odreฤ‘eni korak iznad, a ne na sam Hive.

Simptom Uzrok i popravak
Informacije o verziji nisu pronaฤ‘ene u metastoreu Shema nikada nije kreirana. Pokrenite schematool s -initSchema na istoj bazi podataka navedenoj u vezi. URL
ClassNotFoundException za JDBC upravljaฤki program JAR konektora nedostaje u direktoriju Hive lib ili se koristi Connector/J 8 i klasa je sada com.mysql.cj.jdbc.Driver. Ponovno provjerite softversku vezu iz koraka 3.
Pristup odbijen za korisnika hiveuser Privilegije su dodijeljene samo jednom hostu. Izradite raฤun i za localhost i za host sa zamjenskim znakom, a zatim pokrenite ispraznite privilegije.
Sintaktiฤka pogreลกka blizu IDENTIFICIRANO OD MySQL 8 je uklonjeno IDENTIFIED BY iz GRANT naredbe. Prvo izdajte CREATE USER, a zatim GRANT.
Dohvaฤ‡anje javnog kljuฤa nije dopuลกteno Connector/J 8 prema zadanim postavkama odbija neลกifrirano rukovanje. Dodajte useSSL=false i allowPublicKeyRetrieval=true u JDBC. URL na pouzdanoj mreลพi
Tablice nedostaju nakon nadogradnje Hivea Shema i dalje odgovara staroj verziji. Pokrenite schematool s -upgradeSchema umjesto da onemoguฤ‡ujete provjeru sheme.

Nakon ลกto metastore pouzdano odgovori, definicije tablica koje zapisuje stvaraju se s naredbama opisanim u Hive kreira, mijenja i briลกe tablicu.

Pitanja i odgovori

Koลกnice podrลพavaju Derby, MySQL, PostgreSQL, Oracle i Microsoft SQL Server, a schematool prihvaฤ‡a svaki od njih putem zastavice -dbType. Derby ostaje zadana postavka i ograniฤen je na jednu sesiju.

Embedded pokreฤ‡e Derby unutar Hive procesa. Local pokreฤ‡e metastore kod unutar Hivea, ali na vanjskoj bazi podataka kao ลกto je MySQLUdaljeno pokreฤ‡e metastore kao vlastitu Thrift uslugu koju dijeli nekoliko klijenata.

Baze podataka DBS zapisa, tablice TBLS zapisa, definicije stupaca COLUMNS_V2 zapisa, deskriptori pohrane SDS zapisa i unosi particija PARTITIONS zapisa. Ova imena su interna, stoga ih upitajte radi pregleda umjesto da ih ureฤ‘ujete ruฤno.

Pohranite ga u spremiลกte kljuฤeva pruลพatelja vjerodajnica Hadoop i usmjerite hive.metastore.credential.provider.path na tu datoteku, a zatim uklonite obiฤnu vrijednost. Ograniฤavanje dozvola datoteke na hive-site.xml je minimalna rezervna mjera.

Datoteke na HDFS-u preลพivljavaju, ali svaka tablica, particija i definicija stupca nestaju i Hive ih viลกe ne moลพe ฤitati. Regular MySQL Izvjeลกtaji metastore baze podataka stoga su dio normalne sigurnosne kopije klastera.

Usluga Thrift metastore prema zadanim postavkama osluลกkuje port 9083, postavljen putem hive.metastore.port. Klijenti joj pristupaju s hive.metastore.uris umjesto s izravnim JDBC vjerodajnicama, ลกto sprjeฤava pristup lozinki baze podataka klijentskim raฤunalima.

Da. Otkrivanje anomalija u zapisnicima upita metastorea oznaฤava iznenadne skokove poziva, sporo ispisivanje particija i nekontrolirani rast tablica prije isteka vremena za poslove. Model istiฤe kandidate, a administrator i dalje potvrฤ‘uje uzrok.

Copilot izraฤ‘uje blok svojstva javax.jdo.option iz kratkog komentara, a agentski asistenti mogu skriptirati cijelu postavku. Provjerite klasu upravljaฤkog programa i port, jer podaci za obuku i dalje favoriziraju stariji naziv konektora.

Saลพmite ovu objavu uz: