Hur man installerar och konfigurerar HIVE Metastore med MYSQL
โก Smart sammanfattning
Hive-metastore lagrar varje tabelldefinition, kolumnnamn och datatyp bakom Apache Hive, och flyttar det arkivet frรฅn standarddatabasen Derby till MySQL รคr det som gรถr det mรถjligt fรถr flera anvรคndare att ansluta samtidigt.

Vad รคr HIVE Metastore?
Hive-metastore รคr ett arkiv som lagrar metadata (kolumnnamn, datatyper, kommentarer etc.) relaterade till Apache-bikupan med hjรคlp av MySQL or PostgreSQL. Denna Hive-metastore รคr implementerad med hjรคlp av tabeller i en relationsdatabas.
Ingenting i metaarkivet lagrar sjรคlva raderna. Posterna stannar pรฅ HDFS, och metaarkivet registrerar bara var varje tabell finns och vad dess kolumner heter, vilket รคr anledningen till att det kostar schemat snarare รคn data att fรถrlora den.
Varfรถr anvรคnda MySQL i Hive som Metastore
Metastore-backend รคr ett val, inte en fast del av Hive, och den levererade standarden รคr avsiktligt minimal. Tre begrรคnsningar driver nรคstan alla installationer bort frรฅn den.
- Som standard levereras Hive med Derby-databasen som metastore.
- Derby kan endast stรถdja en aktiv anvรคndare รฅt gรฅngen.
- Derby rekommenderas inte i en produktionsmiljรถ.
Sรฅ lรถsningen hรคr รคr
- Anvรคnda MySQL som metalagring i backend fรถr att ansluta flera anvรคndare till Hive samtidigt
- MySQL รคr det bรคsta valet fรถr den fristรฅende metabutiken
Hur man installerar och konfigurerar Hive Metastore till MySQL Databas
De nio stegen nedan kรถrs i ordning pรฅ en maskin som redan har Hadoop och Hive installerade. Varje steg avslutas med en skรคrmdump av den faktiska terminal- eller skalutdata.
Steg 1) Installera MySQL server
I detta steg kommer vi att utfรถra tvรฅ uppgifter
- Installation av mysql-server
- Kontrollerar mysql-servern och dess process
Anvรคnda sudo apt-get installera mysql-server kommando, vi kan ladda ner MySQL server. Installera MySQL som visas i skรคrmdumpen nedan.
Efter lyckad installation, MySQL kommer att kรถras som visas pรฅ skรคrmdumpen nedan, dรคr processkontrollen bekrรคftar att tjรคnsten รคr aktiv.
Steg 2) Installera MySQL Java kontakt
Installera MySQL Java kontakt. Detta รคr fรถr Java beroenden och anslutningsรคndamรฅl, eftersom Hive nรฅr MySQL รถver JDBC. Nรคsta skรคrmdump visar paketinstallationen.
Steg 3) Skapa mjuk lรคnk fรถr anslutning
Skapar en mjuk lรคnk fรถr kopplingen i Hive lib-katalogen. Detta รคr den mjuka lรคnken mellan Java och MySQL, och det รคr det som placerar drivrutins-JAR-filen pรฅ Hive-klassvรคgen. Kommandot och dess resultat visas nedan.
Steg 4) Konfigurering MySQL lagring i Hive
Ocuco-landskapet MySQL Shell mรฅste รถppnas som root-konto innan nรฅgon Hive-anvรคndare kan skapas, som visas nedan.
- Skriv mysql โu root โp fรถljt av lรถsenordet
- Hรคr representerar โu root-anvรคndarnamnet och โp betecknar lรถsenordet
- Efter att ha angett ovanstรฅende kommando mรฅste anvรคndaren ange ett giltigt lรถsenord och sedan trycka pรฅ enter.
- Sedan kommer den att gรฅ in i MySQL skallรคge
Steg 5) Skapa anvรคndarnamn och lรถsenord
Skapa ett anvรคndarnamn och lรถsenord fรถr MySQLoch bevilja behรถrigheter. Skรคrmdumpen nedan visar de tre satser som kรถrs inuti MySQL skal.
Vi mรฅste utfรถra kommandona som visas nedan,
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8 Den kombinerade formen av den andra satsen tolkas inte lรคngre, eftersom IDENTIFIED BY togs bort frรฅn GRANT. Skapa kontot fรถrst och ge det sedan beviljat beviljande, och upprepa raden CREATE USER fรถr localhost-vรคrden sรฅvรคl som fรถr jokerteckenvรคrden.
Steg 6) Konfigurera hive-site.xml
- Efter steg 5 tilldelas ett anvรคndarnamn och lรถsenord till MySQL databas och ger behรถrigheter.
- Hรคr kommer vi att konfigurera nรฅgra egenskaper i Hive fรถr att fรฅ en anslutning till MySQL databas.
Konfigurationsfilen รถppnas frรฅn Hive conf-katalogen, som nรคsta skรคrmdump visar.
Skรคrmdumpen som fรถljer visar den fรคrdiga filen med alla fyra egenskaper pรฅ plats.
Frรฅn skรคrmdumpen ovan ser vi fรถljande. Hรคr definierar vi fyra egenskaper som รคr nรถdvรคndiga fรถr att etablera MySQL som metabutiken i Hive.
Dessa รคr fรถljande:
- Den hรคr egenskapen รคr fรถr anslutningen URLHรคr definierar vi anslutningURL i den hรคr egenskapen. Den fungerar som JDBC-anslutningsstrรคngen och representerar รคven metaarkivets plats.
- Den hรคr egenskapen รคr fรถr namnet pรฅ anslutningsdrivrutinen. Hรคr รคr com.mysql.jdbc.Driver det vรคrde vi mรฅste ange i vรคrdetaggen.
- Den hรคr egenskapen anvรคnds fรถr att definiera anvรคndarnamnet fรถr anslutningen. I detta definierade vi "hiveuser" som anvรคndarnamnet
- Den hรคr egenskapen anvรคnds fรถr att ange anslutningslรถsenordet. I detta definierade vi "hivepassword" som anvรคndarlรถsenordet.
Nรคr egenskaperna รคr placerade i hive-site.xml mรฅste vi manuellt spara (Ctrl+S) och stรคnga filen. Efter att ha stรคngt filen mรฅste vi skapa en Hive-tabell och kontrollera tabellinformationen i MySQL lagring.
Placera den hรคr koden i 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>
Tvรฅ vรคrden ovan beror pรฅ vilken kontaktversion som anvรคnds. MySQL Connector/J 8 dรถpte om drivrutinsklassen till com.mysql.cj.jdbc.Driver, och den fรถrvรคntar sig ocksรฅ en explicit port och SSL-instรคllning, sรฅ en modern URL brukar lรคsa jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Eftersom lรถsenordet รคr i klartext bรถr filen endast kunna lรคsas av Hive-tjรคnstkontot.
Steg 7) Skapa tabell
Skapa tabellen "guru99" i Hive, som visas i Hive-skalet nedan.
Frรฅn ovanstรฅende skรคrmdump kan vi observera fรถljande
- Skapande av en tabell med namnet "guru99" med tvรฅ kolumnnamn
- Kolumnnamnen anges med sina datatyper, den ena ett heltal och den andra en strรคng
I nรคsta steg ska vi kontrollera om den รคr lagrad i MySQL eller inte.
Steg 8) Gรฅ in i MySQL skallรคge
Metaarkivdatabasen vรคljs fรถrst, och tabellen som fรถljer visas nedan.
Frรฅn ovanstรฅende skรคrmdump kan vi observera fรถljande
- Fรถrst mรฅste vi vรคlja databasen med "anvรคnd metastore"
- Nรคr metaarkivet har valts kan vi kontrollera tabellerna som finns i det genom att anvรคnda kommandot "visa tabeller" som visas pรฅ skรคrmdumpen.
- Oavsett vilka tabeller som skapas i Hive lagras metadata som motsvarar dessa tabeller under TBLS i MySQL databas
- Tabellen โguru99โ skapas i Hive, sรฅ motsvarande metadata lagras i MySQL enligt TBLS
Steg 9) Ange vรคlj * frรฅn TBLS
Kontrollerar om den skapade tabellen finns i MySQL eller inte. Frรฅgan och dess resultat visas pรฅ skรคrmbilden nedan.
Genom att ange vรคlj * frรฅn TBLS kommer den att visa tabellerna som vi skapade i Hive-skallรคget
Frรฅn ovanstรฅende skรคrmdump kan vi observera fรถljande saker:
- Tabellnamnet โguru99โ som skapades i Hive kan visas i MySQL skallรคge
- Utรถver detta kommer den ocksรฅ att ge information som tidpunkten fรถr tabellskapning, รฅtkomsttid och andra egenskaper som visas pรฅ skรคrmdumpen ovan.
Sรฅ hรคr initierar du Hive-metastore-schemat med schematool
Flaggan createDatabaseIfNotExist i anslutningen URL skapar en tom metastore-databas, men den skapar inte de ungefรคr sjuttio tabeller som Hive fรถrvรคntar sig inuti den. I Hive 1.x och senare tillhรถr det jobbet schematool-verktyget, och hoppa รถverping Det รคr den enskilt vanligaste orsaken till att en nyligen konfigurerad metaarkiv vรคgrar att starta.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
Kommandot lรคser samma fyra egenskaper frรฅn hive-site.xml, ansluter till hiveuser-kontot och kรถr det medfรถljande SQL-skriptet som matchar Hive-versionen. En lyckad kรถrning avslutas med ett meddelande om slutfรถrande, varefter tillstรฅndet kan bekrรคftas nรคr som helst.
$HIVE_HOME/bin/schematool -dbType mysql -info
Flaggorna nedan tรคcker hela livslรคngden fรถr ett metaarkivschema.
| Alternativet | Vad den gรถr |
|---|---|
| -dbType | Namnger backend-systemet, sรฅsom mysql, derby, postgres, oracle eller mssql |
| -initSchema | Skapar metastore-tabellerna fรถr den aktuella Hive-versionen |
| -INFO | Rapporterar schemaversionen som registrerats i databasen |
| -uppgraderingsschema | Migrerar ett befintligt schema efter en Hive-uppgradering |
| -bekrรคfta | Kontrollerar schemat fรถr saknade tabeller och versionsavvikelser |
En relaterad egenskap รคr vรคrd att kรคnna till fรถre fรถrsta starten. Nรคr hive.metastore.schema.verification รคr sant jรคmfรถr Hive schemaversionen i MySQL mot sin egen och vรคgrar att kรถras vid en avvikelse. Den kontrollen รคr en sรคkerhetsรฅtgรคrd, sรฅ rรคtt svar รคr att kรถra uppgraderingen snarare รคn att stรคnga av den. MySQL backend anvรคnds av Hive-installationen som omfattas av installera Hive pรฅ Ubuntu.
Vanliga Hive Metastore-fel och hur man รฅtgรคrdar dem
De flesta fel i detta skede producerar ett av en handfull meddelanden, och varje meddelande pekar pรฅ ett specifikt steg ovan snarare รคn pรฅ Hive sjรคlvt.
| Symptom | Orsak och รฅtgรคrd |
|---|---|
| Versionsinformation hittades inte i metastore | Schemat skapades aldrig. Kรถr schematool med -initSchema mot samma databas som namnges i anslutningen. URL |
| ClassNotFoundException fรถr JDBC-drivrutinen | Connector-JAR-filen saknas i Hive lib-katalogen, eller Connector/J 8 anvรคnds och klassen รคr nu com.mysql.cj.jdbc.Driver. Kontrollera mjuklรคnken frรฅn steg 3 igen. |
| ร tkomst nekad fรถr anvรคndaren hiveuser | Privilegier beviljades endast till en vรคrd. Skapa kontot fรถr bรฅde localhost och jokerteckenvรคrden och kรถr sedan tรถmning av privilegier. |
| Syntaxfel nรคra IDENTIFIERAD AV | MySQL 8 tog bort IDENTIFIED BY frรฅn GRANT-satsen. Utfรคrda CREATE USER fรถrst och GRANT dรคrefter |
| Hรคmtning av offentliga nycklar รคr inte tillรฅten | Connector/J 8 vรคgrar en okrypterad handskakning som standard. Lรคgg till useSSL=false och allowPublicKeyRetrieval=true till JDBC. URL pรฅ ett betrott nรคtverk |
| Tabeller saknas efter en Hive-uppgradering | Schemat matchar fortfarande den gamla versionen. Kรถr schematool med -upgradeSchema istรคllet fรถr att inaktivera schemaverifiering. |
Nรคr metaarkivet svarar tillfรถrlitligt skapas de tabelldefinitioner som registreras med de satser som beskrivs i Hive skapar, รคndrar och tar bort tabell.








