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.









