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 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
- Instalacija mysql-servera
- 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.
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.
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.
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.
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.
- 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.
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.
Sljedeฤa snimka zaslona prikazuje gotovu datoteku sa sva ฤetiri svojstva na mjestu.
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:
- Ovo svojstvo je za vezu URLOvdje definiramo VezuURL u ovom svojstvu. Djeluje kao JDBC niz za povezivanje i predstavlja lokaciju metastore-a.
- Ovo svojstvo je za naziv upravljaฤkog programa veze. Ovdje je com.mysql.jdbc.Driver vrijednost koju moramo spomenuti u oznaci vrijednosti.
- Ovo svojstvo se koristi za definiranje korisniฤkog imena za vezu. Ovdje smo definirali "hiveuser" kao korisniฤko ime.
- 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.
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.
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.
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.








