Cum se instalează și se configurează HIVE Metastore cu MYSQL
⚡ Rezumat inteligent
Metastore-ul Hive stochează fiecare definiție de tabel, nume de coloană și tip de date în spatele Apache Hive, iar mutarea acelui depozit din baza de date Derby implicită în MySQL este ceea ce permite conectarea mai multor utilizatori simultan.
Ce este HIVE Metastore?
Metastore-ul Hive este un depozit care stochează metadate (nume de coloane, tipuri de date, comentarii etc.) legate de Apache Hive folosind MySQL or PostgreSQL. Acest metastore Hive este implementat folosind tabele dintr-o bază de date relațională.
Nimic din metastore nu deține rândurile în sine. Înregistrările rămân pe HDFS, iar metastore-ul înregistrează doar unde se află fiecare tabel și cum se numesc coloanele sale, motiv pentru care pierderea acestuia costă schema și nu datele.
De ce să folosiți MySQL în Hive ca Metastore
Backend-ul metastore este o opțiune, nu o parte fixă a Hive, iar configurația implicită este în mod deliberat minimală. Trei limite îndepărtează aproape fiecare instalare de aceasta.
- În mod implicit, Hive vine cu baza de date Derby ca metastore.
- Derby poate suporta un singur utilizator activ la un moment dat.
- Derby nu este recomandat într-un mediu de producție.
Deci soluția aici este
- Utilizare MySQL ca meta-stocare în backend pentru a conecta mai mulți utilizatori la Hive simultan
- MySQL este cea mai bună alegere pentru metastore-ul independent
Cum se instalează și se configurează Hive Metastore la MySQL Baza de date
Cei nouă pași de mai jos se execută în ordine pe o mașină pe care sunt deja instalate Hadoop și Hive. Fiecare pas se încheie cu o captură de ecran a ieșirii reale a terminalului sau shell-ului.
Pasul 1) Instalați MySQL server de
În acest pas, vom efectua două sarcini
- Instalarea mysql-server
- Verificarea mysql-server și a procesului acestuia
Utilizarea sudo apt-get a instala mysql-server comandă, putem descărca MySQL server. Instalare MySQL așa cum se arată în imaginea de mai jos.
După instalarea cu succes, MySQL va rula așa cum se arată în captura de ecran de mai jos, unde verificarea procesului confirmă că serviciul este activ.
Pasul 2) Instalați MySQL Java Conector
instalarea MySQL Java conector. Acesta este pentru Java dependențe și scopuri de conectare, deoarece Hive ajunge MySQL prin JDBC. Următoarea captură de ecran arată instalarea pachetului.
Pasul 3) Creați o legătură soft pentru conector
Crearea unei legături soft pentru conectorul din directorul Hive lib. Aceasta este legătura soft dintre Java și MySQLși este ceea ce plasează fișierul JAR al driverului pe calea de clasă Hive. Comanda și rezultatul acesteia apar mai jos.
Pasul 4) Configurare MySQL depozitare în Hive
MySQL shell-ul trebuie deschis ca cont root înainte de a putea fi creat orice utilizator Hive, așa cum se arată în continuare.
- Tastați mysql –u root –p urmat de parolă
- Aici –u reprezintă numele de utilizator root și –p reprezintă parola
- După introducerea comenzii de mai sus, utilizatorul trebuie să introducă o parolă validă și apoi să apese Enter.
- Apoi va intra în MySQL modul shell
Pasul 5) Creați nume de utilizator și parolă
Crearea unui nume de utilizator și a unei parole pentru MySQLși acordarea de privilegii. Captura de ecran de mai jos prezintă cele trei instrucțiuni care rulează în interiorul MySQL coajă.
Trebuie să executăm comenzile așa cum se arată mai jos,
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8 forma combinată a celei de-a doua instrucțiuni nu mai este analizată, deoarece IDENTIFIED BY a fost eliminat din GRANT. Creați mai întâi contul, apoi acordați-i dreptul și repetați linia CREATE USER atât pentru gazda localhost, cât și pentru gazda wildcard.
Pasul 6) Configurarea fișierului hive-site.xml
- După ce Pasul 5 atribuie un nume de utilizator și o parolă MySQL baza de date și acordă privilegii.
- Aici vom configura câteva proprietăți în Hive pentru a obține o conexiune cu MySQL Bază de date.
Fișierul de configurare este deschis din directorul Hive conf, așa cum se arată în următoarea captură de ecran.
Captura de ecran care urmează arată fișierul finalizat cu toate cele patru proprietăți configurate.
Din captura de ecran de mai sus, observăm următoarele. Aici definim 4 proprietăți necesare pentru a stabili MySQL ca metastore în Hive.
Acestea sunt după cum urmează:
- Această proprietate este pentru conexiune URLAici definim ConexiuneaURL în această proprietate. Acționează ca șir de conexiune JDBC și reprezintă locația metastore-ului.
- Această proprietate este pentru numele driverului de conexiune. Aici, com.mysql.jdbc.Driver este valoarea pe care trebuie să o menționăm în eticheta de valoare.
- Această proprietate este utilizată pentru definirea numelui de utilizator al conexiunii. În acest caz, am definit „hiveuser” ca nume de utilizator.
- Această proprietate este utilizată pentru menționarea parolei de conectare. În acest caz, am definit „hivepassword” ca parolă de utilizator.
Odată ce proprietățile sunt plasate în hive-site.xml, trebuie să salvăm manual (Ctrl+S) și să închidem fișierul. După închiderea acestui fișier, trebuie să creăm un tabel Hive și să verificăm detaliile tabelului în MySQL depozitare.
Plasați acest cod în 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>
Cele două valori de mai sus depind de versiunea conectorului utilizată. MySQL Connector/J 8 a redenumit clasa driverului în com.mysql.cj.jdbc.Driver și așteaptă, de asemenea, un port explicit și o setare SSL, deci o versiune modernă URL de obicei citește jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Deoarece parola se află în text clar, fișierul ar trebui să poată fi citit doar de contul de serviciu Hive.
Pasul 7) Creați un tabel
Creați tabelul „guru99” în Hive, așa cum se arată în shell-ul Hive de mai jos.
Din captura de ecran de mai sus, putem observa următoarele
- Crearea unui tabel numit „guru99” cu două nume de coloană
- Numele coloanelor sunt menționate cu tipurile lor de date, unul un număr întreg și celălalt un șir de caractere
În pasul următor, vom verifica dacă este stocat în MySQL sau nu.
Pasul 8) Intrați în MySQL modul shell
Baza de date metastore este selectată mai întâi, iar tabelul care urmează este afișat mai jos.
Din captura de ecran de mai sus, putem observa următoarele
- Mai întâi trebuie să selectăm baza de date cu „use metastore”
- Odată ce metastore-ul este ales, putem verifica tabelele prezente în acesta folosind comanda „show tables”, așa cum se arată în captura de ecran.
- Indiferent de tabelele create în Hive, metadatele corespunzătoare acelor tabele sunt stocate în TBLS, în MySQL Baza de date
- Tabelul „guru99” este creat în Hive, astfel încât metadatele corespunzătoare sunt stocate în MySQL sub TBLS
Pasul 9) Introduceți select * din TBLS
Verificarea prezenței tabelului creat în MySQL sau nu. Interogarea și rezultatul acesteia apar în captura de ecran de mai jos.
Introducând select * din TBLS, va afișa tabelele pe care le-am creat în modul shell Hive
Din captura de ecran de mai sus putem observa următoarele lucruri:
- Numele tabelului „guru99” care a fost creat în Hive poate fi afișat în MySQL modul shell
- Pe lângă acestea, va oferi și informații precum ora creării tabelului, ora accesării și alte proprietăți, așa cum se arată în captura de ecran de mai sus.
Cum se inițializează schema Hive Metastore cu schematool
Indicatorul createDatabaseIfNotExist din conexiune URL creează o bază de date metastore goală, dar nu creează cele aproximativ șaptezeci de tabele pe care Hive le așteaptă în interiorul acesteia. Pe Hive 1.x și versiunile ulterioare, acel job aparține utilitarului schematool și se trece pesteping Este cel mai frecvent motiv pentru care un metastore proaspăt configurat refuză să pornească.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
Comanda citește aceleași patru proprietăți din hive-site.xml, se conectează cu contul hiveuser și execută scriptul SQL inclus care corespunde versiunii Hive. O execuție reușită se încheie cu un mesaj de finalizare, după care starea poate fi confirmată în orice moment.
$HIVE_HOME/bin/schematool -dbType mysql -info
Steagurile de mai jos acoperă întreaga durată de viață a unei scheme metastore.
| Opțiune | Ce face |
|---|---|
| -dbType | Denumește backend-ul, cum ar fi mysql, derby, postgres, oracle sau mssql |
| -initSchema | Creează tabelele metastore pentru versiunea curentă a Hive |
| -info | Raportează versiunea schemei înregistrată în baza de date |
| -upgradeSchema | Migrează o schemă existentă după o actualizare Hive |
| -valida | Verifică schema pentru tabele lipsă și nepotriviri de versiune |
O proprietate conexă merită cunoscută înainte de prima pornire. Când hive.metastore.schema.verification este true, Hive compară versiunea schemei din MySQL împotriva propriilor sale și refuză să ruleze în cazul unei nepotriviri. Această verificare este o măsură de siguranță, așadar răspunsul corect este rularea actualizării, mai degrabă decât oprirea acesteia. Același lucru MySQL backend-ul este utilizat de instalarea Hive descrisă în instalați Hive pe Ubuntu.
Erori comune ale Hive Metastore și cum să le remediați
Majoritatea eșecurilor în această etapă produc unul dintre puținele mesaje, iar fiecare indică o etapă specifică de mai sus, mai degrabă decât Hive-ul în sine.
| Simptom | Cauză și remediere |
|---|---|
| Informațiile despre versiune nu au fost găsite în metastore | Schema nu a fost niciodată creată. Rulați schematool cu -initSchema pentru aceeași bază de date numită în conexiune. URL |
| Excepție ClassNotFound pentru driverul JDBC | Fișierul JAR al conectorului lipsește din directorul Hive lib sau Connector/J 8 este în uz, iar clasa este acum com.mysql.cj.jdbc.Driver. Verificați din nou linkul soft de la Pasul 3. |
| Acces refuzat pentru utilizatorul hiveuser | Privilegiile au fost acordate unei singure gazde. Creați contul atât pentru localhost, cât și pentru gazda wildcard, apoi executați eliminarea privilegiilor. |
| Eroare de sintaxă în apropierea IDENTIFICAT DE | MySQL 8 a eliminat IDENTIFIED BY din instrucțiunea GRANT. Emiteți mai întâi CREATE USER și GRANT după aceea. |
| Recuperarea cheii publice nu este permisă | Conectorul/J 8 refuză în mod implicit o strângere de mână necriptată. Adăugați useSSL=false și allowPublicKeyRetrieval=true la JDBC. URL într-o rețea de încredere |
| Tabelele lipsesc după o actualizare Hive | Schema încă corespunde cu versiunea veche. Rulați schematool cu -upgradeSchema în loc să dezactivați verificarea schemei. |
Odată ce metastore-ul răspunde în mod fiabil, definițiile tabelului pe care le înregistrează sunt create cu instrucțiunile descrise în Crearea, modificarea și eliminarea tabelelor în Hive.









