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 den innehรฅller: Metaarkivet lagrar schemametadata i relationstabeller, medan sjรคlva tabelldatan finns kvar pรฅ HDFS.
  • ???? Varfรถr Derby misslyckas: Den medfรถljande Derby-metaarkiv accepterar en aktiv session, vilket utesluter den fรถr alla delade kluster eller produktionskluster.
  • ๐Ÿ”ง Fyra fastigheter: fรถrbindelseURL, ConnectionDriverName, ConnectionUserName och ConnectionPassword i hive-site.xml-punkten Hive vid MySQL.
  • ๐Ÿ”— Fรถrarplacering: Ocuco-landskapet MySQL JDBC-anslutningen mรฅste lรคnkas till Hive lib-katalogen innan nรฅgot anslutningsfรถrsรถk lyckas.
  • ๐Ÿงฑ Schema fรถrst: Schematool-verktyget skapar metastore-tabellerna, och Hive vรคgrar att starta mot ett oinitialiserat schema.
  • ๐Ÿ”Ž Verifiera i MySQL: En tabell som skapats i Hive visas omedelbart som en rad i TBLS-tabellen i metaarkivdatabasen.

Sรฅ hรคr installerar och konfigurerar du Hive-metaarkivet med MySQL

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

  1. Installation av mysql-server
  2. 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.

Terminal som kรถr sudo apt-get install mysql-server pรฅ Ubuntu

Efter lyckad installation, MySQL kommer att kรถras som visas pรฅ skรคrmdumpen nedan, dรคr processkontrollen bekrรคftar att tjรคnsten รคr aktiv.

Terminalen bekrรคftar att mysql-server-processen kรถrs efter installationen

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.

Terminalinstallation av libmysql-java MySQL Java kontaktpaket

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.

Terminal skapar en mjuk lรคnk fรถr MySQL connector JAR i Hive lib-katalogen

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.

Terminalen รถppnar MySQL skalet med kommandot mysql -u root -p

  • 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.

MySQL Shell skapar hiveuser-kontot och ger behรถrigheter

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.

Terminal som รถppnar hive-site.xml fรถr redigering i Hive conf-katalogen

Skรคrmdumpen som fรถljer visar den fรคrdiga filen med alla fyra egenskaper pรฅ plats.

hive-site.xml som visar de fyra javax.jdo.option-anslutningsegenskaperna

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:

  1. 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.
  2. 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.
  3. Den hรคr egenskapen anvรคnds fรถr att definiera anvรคndarnamnet fรถr anslutningen. I detta definierade vi "hiveuser" som anvรคndarnamnet
  4. 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.

Hive-shell skapar guru99-tabellen med ett heltal och en strรคngkolumn

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.

MySQL shell kรถrs med hjรคlp av metastore och show tables fรถr att lista metastore-tabeller

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.

MySQL shell som kรถr select * frรฅn TBLS och visar guru99-tabellraden

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.

Vanliga frรฅgor

Hive skickar stรถd till Derby, MySQL, PostgreSQL, Oracle och Microsoft SQL Server, och schematool accepterar var och en av dem via flaggan -dbType. Derby fรถrblir standardinstรคllningen och begrรคnsas till en enda session.

Embedded kรถr Derby inuti Hive-processen. Local kรถr metastore-koden inuti Hive men mot en extern databas som t.ex. MySQLRemote kรถr metaarkivet som en egen Thrift-tjรคnst som flera klienter delar.

DBS-postdatabaser, TBLS-posttabeller, COLUMNS_V2-postkolumndefinitioner, SDS-postlagringsbeskrivningar och PARTITIONS-postpartitionsposter. Dessa namn รคr interna, sรฅ frรฅga dem fรถr inspektion istรคllet fรถr att redigera dem manuellt.

Lagra den i en nyckellagring fรถr en Hadoop-autentiseringsprovider och peka hive.metastore.credential.provider.path mot den filen, ta sedan bort det vanliga vรคrdet. Att begrรคnsa filbehรถrigheterna pรฅ hive-site.xml รคr den minsta alternativa lรถsningen.

Filerna pรฅ HDFS finns kvar, men varje tabell-, partitions- och kolumndefinition fรถrsvinner och Hive kan inte lรคngre lรคsa dem. MySQL Dumpfiler frรฅn metaarkivdatabasen รคr dรคrfรถr en del av normal klustersรคkerhetskopiering.

Thrift-metastore-tjรคnsten lyssnar som standard pรฅ port 9083, instรคlld via hive.metastore.port. Klienter nรฅr den med hive.metastore.uris snarare รคn med direkta JDBC-autentiseringsuppgifter, vilket hรฅller databasens lรถsenord borta frรฅn klientdatorerna.

Ja. Avvikelsedetektering รถver metaarkivfrรฅgeloggar flaggar plรถtsliga anropstoppar, lรฅngsamma partitionslistningar och ojรคmn tabelltillvรคxt innan jobbens timeout gรฅr ut. Modellen markerar kandidater, och en administratรถr bekrรคftar fortfarande orsaken.

Copilot utarbetar egenskapsblocket javax.jdo.option frรฅn en kort kommentar, och agentassistenter kan skripta hela installationen. Verifiera drivrutinsklassen och porten, eftersom trรคningsdata fortfarande fรถredrar det รคldre connectornamnet.

Sammanfatta detta inlรคgg med: