Kuidas installida ja konfigureerida HIVE metastore MYSQL-iga

โšก Nutikas kokkuvรตte

Hive'i metasalvestus salvestab kรตik tabeli definitsioonid, veeru nimed ja andmetรผรผbid Apache Hive'i taha ning selle hoidla teisaldamine Derby vaikeandmebaasist... MySQL mis vรตimaldab mitmel kasutajal korraga รผhenduse luua.

  • ๐Ÿ—„๏ธ Mida see sisaldab: Metasalvestus hoiab skeemi metaandmeid relatsioonitabelites, samas kui tabeli andmed ise jรครคvad HDFS-i.
  • ๐Ÿšซ Miks Derby ebaรตnnestub: Komplekti kuuluv Derby metasalvestus aktsepteerib รผhte aktiivset seanssi, mis vรคlistab selle mis tahes jagatud vรตi tootmisklastri puhul.
  • ๐Ÿ”ง Neli omadust: รœhendusURL, ConnectionDriverName, ConnectionUserName ja ConnectionPassword failis hive-site.xml, mis osutab Hive'ile aadressil MySQL.
  • ๐Ÿ”— Juhi paigutus: . MySQL Enne รผhenduse รตnnestumist tuleb JDBC-lib lingida Hive'i lib kataloogiga.
  • ๐Ÿงฑ Skeem kรตigepealt: Schematool utiliit loob metasalvestustabelid ja Hive keeldub initsialiseerimata skeemi korral kรคivitumast.
  • ๐Ÿ”Ž Kinnita sisse MySQL: Hive'is loodud tabel kuvatakse metasalvestusandmebaasi TBLS-tabelis kohe reana.

Kuidas Hive'i metasalvestust installida ja seadistada MySQL

Mis on HIVE metastore?

Hive'i metasalvestus on hoidla, mis salvestab metaandmeid (veergude nimed, andmetรผรผbid, kommentaarid jne), mis on seotud Apache taru kasutamine MySQL or PostgreSQL. See Hive'i metapood on realiseeritud relatsiooniandmebaasi tabelite abil.

Metasalvestuses ei ole ridu endid. Kirjed jรครคvad HDFS-i ja metasalvestus salvestab ainult iga tabeli asukoha ja veergude nimed, mistรตttu selle kaotamine maksab pigem skeemi kui andmeid.

Miks kasutada MySQL tarus metasalvestusena

Metastore'i taustsรผsteem on valik, mitte Hive'i fikseeritud osa, ja tehaseseaded on tahtlikult minimaalsed. Kolm piirangut lรผkkavad peaaegu iga installi sellest eemale.

  • Vaikimisi on Hive'il metasalvestusena kaasas Derby andmebaas.
  • Derby saab korraga toetada ainult รผhte aktiivset kasutajat.
  • Derbyt ei soovitata tootmiskeskkonnas kasutada.

Seega lahendus on siin

  • Kasutama MySQL metasalvestusruumina taustsรผsteemis, et รผhendada korraga mitu kasutajat Hive'iga
  • MySQL on parim valik eraldiseisva metasalvestusruumi jaoks

Kuidas installida ja konfigureerida Hive metastore MySQL andmebaas

Allolevad รผheksa sammu toimivad jรคrjekorras masinas, kuhu on juba installitud Hadoop ja Hive. Iga sammu lรตpus on ekraanipilt terminali vรตi shelli vรคljundist.

Samm 1) Installige MySQL server
Selles etapis tรคidame kaks รผlesannet

  1. Mysql-serveri installimine
  2. Mysql-serveri ja selle protsessi kontrollimine

kasutades sudo apt-get install mysql-server kรคsuga saame alla laadida MySQL server. Installi MySQL nagu on nรคidatud alloleval ekraanipildil.

Terminal, kus tรถรถtab sudo apt-get install mysql-server Ubuntu

Pรคrast edukat installimist MySQL kรคivitub nagu alloleval ekraanipildil nรคidatud, kus protsessikontroll kinnitab teenuse toimimist.

Terminal, mis kinnitab mysql-serveri protsessi tรถรถtamist pรคrast installimist

Samm 2) Installige MySQL Java Connector
Paigaldamine MySQL Java pistik. See on mรตeldud Java sรตltuvuste ja รผhenduse eesmรคrgil, kuna Hive jรตuab MySQL JDBC kaudu. Jรคrgmine ekraanipilt nรคitab paketi installimist.

Terminal libmysql-java installimiseks MySQL Java pistikupakett

Samm 3) Looge konnektori jaoks pehme link
Hive'i lib-kataloogis oleva konnektori jaoks pehme lingi loomine. See on pehme link jรคrgmiste vahel: Java ja MySQL, ja see asetab draiveri JAR-i Hive'i klassiteele. Kรคsk ja selle tulemus on toodud allpool.

Terminal loob pehme lingi MySQL konnektori JAR Hive'i lib-kataloogis

4. samm) Konfigureerimine MySQL hoiustamine tarus
. MySQL Enne mis tahes Hive'i kasutaja loomist tuleb shell avada juurkasutajana, nagu jรคrgmisena nรคidatud.

Terminali avamine MySQL shelli kรคsuga mysql -u root -p

  • Tippige mysql โ€“u root โ€“p ja seejรคrel parool
  • Siin tรคhistab โ€“u root kasutajanime ja โ€“p tรคhistab parooli
  • Pรคrast รผlaltoodud kรคsu sisestamist peab kasutaja sisestama kehtiva parooli ja seejรคrel vajutama sisestusklahvi.
  • Siis siseneb see MySQL kesta reลพiim

Samm 5) Loo kasutajanimi ja parool
Kasutajanime ja parooli loomine MySQLja รตiguste andmist. Allolev ekraanipilt nรคitab kolme lauset, mis tรถรถtavad MySQL kest.

MySQL shell, mis loob hiveuseri konto ja annab privileegid

Peame tรคitma kรคsud, nagu allpool nรคidatud,

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

On MySQL 8. Teise lause kombineeritud vorm enam ei parsi, kuna IDENTIFIED BY eemaldati kรคsust GRANT. Looge esmalt konto ja seejรคrel andke sellele รตigused ning korrake CREATE USER rida nii localhost hosti kui ka metamรคrgiga hosti jaoks.

6. samm) Hive-site.xml-i seadistamine

  • Pรคrast 5. sammu mรครคrab kasutajanimi ja parool MySQL andmebaas ja annab รตigused.
  • Siin konfigureerime Hive'is mรตned omadused, et luua รผhendus MySQL andmebaas.

Konfiguratsioonifail avatakse Hive'i konfiguratsioonikataloogist, nagu on nรคha jรคrgmisel ekraanipildil.

Terminal avab hive-site.xml faili redigeerimiseks Hive'i konfiguratsioonikataloogis

Jรคrgnev ekraanipilt nรคitab valmis faili, millel on kรตik neli atribuuti paigas.

hive-site.xml, mis nรคitab nelja javax.jdo.option รผhenduse omadust

รœlaltoodud ekraanipildilt nรคeme jรคrgmist. Siin defineerime 4 omadust, mis on vajalikud jรคrgmise loomiseks: MySQL kui metasalvestus Hive'is.

Need on jรคrgmised.

  1. See omadus on รผhenduse jaoks URLSiin me defineerime รผhendustURL selles atribuudis. See toimib JDBC รผhendusstringina ja esindab ka metasalvestuse asukohta.
  2. See omadus on รผhenduse draiveri nime jaoks. Siin on com.mysql.jdbc.Driver vรครคrtus, mida peame vรครคrtuse sildil mainima.
  3. Seda omadust kasutatakse รผhenduse kasutajanime mรครคratlemiseks. Selles defineerisime kasutajanimeks โ€žhiveuserโ€.
  4. Seda omadust kasutatakse รผhenduse parooli mainimiseks. Selles defineerisime kasutaja paroolina โ€žhivepasswordโ€.

Kui omadused on faili hive-site.xml paigutatud, peame faili kรคsitsi salvestama (Ctrl+S) ja sulgema. Pรคrast faili sulgemist peame looma Hive'i tabeli ja kontrollima tabeli รผksikasju. MySQL Ladustamine.

Asetage see kood faili 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>

Kaks รผlaltoodud vรครคrtust sรตltuvad kasutatavast pistiku versioonist. MySQL Connector/J 8 nimetas draiveriklassi รผmber com.mysql.cj.jdbc.Driver ja see ootab ka selgesรตnalist porti ja SSL-i seadistust, seega moodne URL Tavaliselt loetakse parooli jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Kuna parool on selge tekstina, peaks faili saama lugeda ainult Hive'i teenusekonto.

Samm 7) Looge tabel
Loo Hive'is tabel โ€žguru99โ€, nagu on nรคidatud alloleval Hive'i kestal.

Taru kest loob guru99 tabeli tรคisarvu ja stringiveeruga

รœlaltoodud ekraanipildi pรตhjal vรตime jรคlgida jรคrgmist

  • Kahe veerunimega tabeli โ€žguru99โ€ loomine
  • Veergude nimed on nimetatud koos nende andmetรผรผpidega, รผks on tรคisarv ja teine โ€‹โ€‹string

Jรคrgmises etapis kontrollime, kas see on salvestatud MySQL vรตi mitte.

8. samm) Sisesta MySQL kesta reลพiim
Esmalt valitakse metasalvestuse andmebaas ja jรคrgnev tabeli loend on nรคidatud allpool.

MySQL shelli kรคivitamisel kasutage metasalvestust ja kuvage tabeleid metasalvestustabelite kuvamiseks

รœlaltoodud ekraanipildi pรตhjal vรตime jรคlgida jรคrgmist

  • Esmalt peame valima andmebaasi, kasutades kรคsku โ€žkasuta metastoreโ€™iโ€.
  • Kui metasalvestus on valitud, saame selles olevaid tabeleid kontrollida kรคsuga โ€žnรคita tabeleidโ€, nagu ekraanipildil nรคidatud.
  • รœkskรตik, milliseid tabeleid Hive'is luuakse, salvestatakse nendele tabelitele vastavad metaandmed TBLS-i alla. MySQL andmebaas
  • โ€žGuru99โ€ tabel luuakse Hive'is, seega salvestatakse vastavad metaandmed sinna MySQL TBLS-i all

Samm 9) Sisestage TBLS-ist vali *
Kontrollitakse, kas loodud tabel on olemas MySQL vรตi mitte. Pรคring ja selle tulemus kuvatakse alloleval ekraanipildil.

MySQL shellil, mis kรคivitab TBLS-ist kรคsu select * ja kuvab guru99 tabeli rida

Sisestades TBLS-ist vali *, kuvatakse tabelid, mille lรตime Hive kestareลพiimis

รœlaltoodud ekraanipildilt vรตime jรคlgida jรคrgmisi asju:

  • Hive'is loodud tabeli nime โ€žguru99โ€ saab kuvada MySQL kesta reลพiim
  • Lisaks pakub see ka teavet tabeli loomise aja, juurdepรครคsuaja ja muude omaduste kohta, nagu on nรคidatud รผlaltoodud ekraanipildil.

Kuidas Hive'i metasalvestusskeemi schematooliga initsialiseerida

รœhenduse lipp createDatabaseIfNotExist URL loob tรผhja metasalvestusandmebaasi, aga ei loo umbes seitsekรผmmend tabelit, mida Hive selle sees ootab. Hive 1.x ja hilisemates versioonides kuulub see รผlesanne schematool utiliidile ja jรคetakse vahele.ping See on kรตige levinum pรตhjus, miks vรคrskelt konfigureeritud metasalvestus keeldub kรคivitumast.

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

Kรคsk loeb failist hive-site.xml samad neli atribuuti, loob รผhenduse hiveuseri kontoga ja kรคivitab Hive'i versioonile vastava komplekteeritud SQL-skripti. Edukas kรคivitamine lรตpeb lรตpuleviimisteatega, mille jรคrel saab olekut igal ajal kinnitada.

$HIVE_HOME/bin/schematool -dbType mysql -info

Allolevad lipud hรตlmavad kogu metasalvestusskeemi eluiga.

valik Mida see teeb
-dbType Nimetab taustaprogrammi, nรคiteks mysql, derby, postgres, oracle vรตi msql
-initSchema Loob praeguse Hive'i versiooni metasalvestustabelid
-info Kuvab andmebaasis salvestatud skeemi versiooni.
-uuendatudSkeem Migreerib olemasoleva skeemi pรคrast Hive'i uuendamist
-valideeri Kontrollib skeemi puuduvate tabelite ja versioonide mittevastavuste suhtes

Enne esmakordset kรคivitamist tasub teada รผhte seotud omadust. Kui hive.metastore.schema.verification on tรตene, vรตrdleb Hive skeemi versiooni MySQL omaenda vastu ja keeldub mittevastavuse korral tรถรถtamast. See kontroll on kaitsemeede, seega on รตige vastus uuenduse kรคivitamine, mitte selle vรคljalรผlitamine. Sama MySQL Hive'i installatsioon kasutab taustsรผsteemi, mida kรคsitletakse jaotises installige Hive'i Ubuntu.

Levinumad Hive'i metasalvestuse vead ja kuidas neid parandada

Enamik selles etapis esinevatest ebaรตnnestumistest annab รผhe vรคhestest teadetest ja igaรผks neist osutab pigem konkreetsele sammule eespool, mitte Hive'ile endale.

Sรผmptom Pรตhjus ja lahendus
Metasalvestusest versiooniinfot ei leitud Skeemi ei loodud kunagi. Kรคivita schematool valikuga -initSchema sama andmebaasi peal, mille รผhenduses mainiti. URL
JDBC draiveri ClassNotFoundException Hive'i lib-kataloogist puudub รผhendusjuurdepรครคsu JAR vรตi on kasutusel รผhendusjuur/J8 ja klass on nรผรผd com.mysql.cj.jdbc.Driver. Kontrollige uuesti 3. sammu pehmet linki.
Kasutajale hiveuser juurdepรครคs keelatud ร•igused anti ainult รผhele hostile. Loo konto nii localhostile kui ka wildcard-hostile ja seejรคrel kรคivita flush privilegies.
Sรผntaksi viga IDENTIFICED BY lรคhedal MySQL 8 eemaldas GRANT-lausest IDENTIFIED BY. Kรคivita esmalt CREATE USER ja seejรคrel GRANT.
Avaliku vรตtme hankimine pole lubatud Connector/J 8 keeldub vaikimisi krรผpteerimata kรคepigistusest. Lisage JDBC-le useSSL=false ja allowPublicKeyRetrieval=true. URL usaldusvรครคrses vรตrgus
Pรคrast Hive'i uuendamist puuduvad tabelid Skeem vastab endiselt vanale versioonile. Kรคivita schematool valikuga -upgradeSchema skeemi kontrollimise keelamise asemel.

Kui metasalvestus annab usaldusvรครคrse vastuse, luuakse selle salvestatud tabeli definitsioonid, kasutades jaotises kirjeldatud lauseid. Taru loomine, muutmine ja tabeli kustutamine.

KKK

Tarulaevade toetus Derbyle, MySQL, PostgreSQL, Oracle ja Microsoft SQL Serverja schematool aktsepteerib neid kรตiki lipu -dbType kaudu. Derby jรครคb vaikeseadeks ja piirdub รผhe seansiga.

Embedded kรคivitab Derby Hive'i protsessi sees. Local kรคivitab metasalvestuskoodi Hive'i sees, aga vรคlise andmebaasi, nรคiteks MySQLKaughaldab metapoodi omaette sรครคstuteenusena, mida jagavad mitmed kliendid.

DBS-kirjete andmebaasid, TBLS-kirjete tabelid, COLUMNS_V2-kirjete veerudefinitsioonid, SDS-kirjete salvestuskirjeldajad ja PARTITIONS-kirjete partitsioonikirjed. Need nimed on sisemised, seega pรคrige neid kontrollimiseks, mitte ei tohiks neid kรคsitsi muuta.

Salvesta see Hadoopi mandaadipakkuja vรตtmehoidlasse ja suuna hive.metastore.credential.provider.path sellele failile, seejรคrel eemalda tavaline vรครคrtus. Failiรตiguste piiramine hive-site.xml-is on minimaalne varuvรตimalus.

HDFS-i failid jรครคvad alles, kuid iga tabel, partitsioon ja veeru definitsioon kaob ning Hive ei saa neid enam lugeda. MySQL Seega on metasalvestuse andmebaasi mรคlutรตmmised osa tavalisest klastri varundamisest.

Thrifti metasalvestusteenus kuulab vaikimisi porti 9083, mis on mรครคratud hive.metastore.port kaudu. Kliendid saavad sinna jรตuda hive.metastore.uris kaudu, mitte otse JDBC sisselogimisandmetega, mis hoiab andmebaasi parooli kliendimasinatest eemal.

Jah. Metasalvestuse pรคringulogide anomaaliate tuvastamine mรคrgistab enne tรถรถde aegumist ootamatuid kรตnede arvu tรตuse, aeglast partitsioonide loetlemist ja tabelite liigset kasvu. Mudel tรตstab esile kandidaadid ja administraator kinnitab ikkagi pรตhjuse.

Copilot loob lรผhikese kommentaari pรตhjal atribuudiploki javax.jdo.option ja agentide assistendid saavad kogu seadistuse skriptida. Kontrollige draiveri klassi ja porti, sest treeningandmed eelistavad endiselt vanemat konnektori nime.

Vรตta see postitus kokku jรคrgmiselt: