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: