So installieren und konfigurieren Sie HIVE Metastore mit MySQL

โšก Intelligente Zusammenfassung

Der Hive-Metastore speichert jede Tabellendefinition, jeden Spaltennamen und jeden Datentyp hinter Apache Hive, und das Verschieben dieses Repositorys von der Standard-Derby-Datenbank nach MySQL ist das, was es mehreren Benutzern ermรถglicht, sich gleichzeitig zu verbinden.

  • ๐Ÿ—„๏ธ Was es enthรคlt: Der Metastore speichert Schema-Metadaten in relationalen Tabellen, wรคhrend die Tabellendaten selbst auf HDFS verbleiben.
  • ๐Ÿšซ Warum Derby scheitert: Der mitgelieferte Derby-Metastore akzeptiert nur eine aktive Sitzung, was ihn fรผr gemeinsam genutzte oder Produktionscluster ausschlieรŸt.
  • ๐Ÿ”ง Vier Eigenschaften: Verbindungen schaffenURLConnectionDriverName, ConnectionUserName und ConnectionPassword in hive-site.xml verweisen auf Hive bei MySQL.
  • ๐Ÿ”— Fahrerplatzierung: Das MySQL Der JDBC-Connector muss in das Hive-Bibliotheksverzeichnis eingebunden werden, bevor ein Verbindungsversuch erfolgreich sein kann.
  • ๐Ÿงฑ Schema zuerst: Das Hilfsprogramm schematool erstellt die Metastore-Tabellen, und Hive weigert sich, mit einem nicht initialisierten Schema zu starten.
  • ๐Ÿ”Ž Bestรคtigen in MySQL: Eine in Hive erstellte Tabelle erscheint sofort als Zeile in der TBLS-Tabelle der Metastore-Datenbank.

Wie man den Hive-Metastore installiert und konfiguriert MySQL

Was ist HIVE Metastore?

Der Hive-Metastore ist ein Repository, das Metadaten (Spaltennamen, Datentypen, Kommentare usw.) speichert, die sich auf Folgendes beziehen: Apache Hive mit automatisierten MySQL or PostgreSQL. Dieser Hive-Metastore wird mithilfe von Tabellen in einer relationalen Datenbank implementiert.

Im Metastore werden die Zeilen selbst nicht gespeichert. Die Datensรคtze verbleiben auf HDFS, und der Metastore speichert lediglich, wo sich die einzelnen Tabellen befinden und wie ihre Spalten benannt sind. Daher betrifft ein Verlust des Metastores eher das Schema als die Daten selbst.

Warum verwenden? MySQL in Hive als Metastore

Das Metastore-Backend ist optional und kein fester Bestandteil von Hive. Die standardmรครŸig ausgelieferte Konfiguration ist bewusst minimalistisch gehalten. Drei Einschrรคnkungen fรผhren dazu, dass fast alle Installationen davon abweichen.

  • StandardmรครŸig verwendet Hive die Derby-Datenbank als Metastore.
  • Derby unterstรผtzt jeweils nur einen aktiven Benutzer.
  • Derby wird fรผr den Einsatz in einer Produktionsumgebung nicht empfohlen.

Die Lรถsung hier lautet also:

  • Arbeiten jederzeit weiterbearbeiten kรถnnen. Jede Prรคsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, MySQL als Metadatenspeicher im Backend, um mehrere Benutzer gleichzeitig mit Hive zu verbinden
  • MySQL ist die beste Wahl fรผr den eigenstรคndigen Metastore

So installieren und konfigurieren Sie Hive Metastore fรผr MySQL Datenbank

Die folgenden neun Schritte werden nacheinander auf einem Rechner ausgefรผhrt, auf dem Hadoop und Hive bereits installiert sind. Jeder Schritt endet mit einem Screenshot der jeweiligen Terminal- oder Shell-Ausgabe.

Schritt 1) โ€‹โ€‹Installieren MySQL Server
In diesem Schritt werden wir zwei Aufgaben ausfรผhren

  1. Installation des MySQL-Servers
  2. รœberprรผfung des MySQL-Servers und seiner Prozesse

Verwendung der sudo apt-get installieren mysql-server Befehl, wir kรถnnen herunterladen MySQL Server. Installieren MySQL wie im Screenshot unten gezeigt.

Terminal, das sudo apt-get install mysql-server ausfรผhrt Ubuntu

Nach erfolgreicher Installation MySQL wird wie im folgenden Screenshot dargestellt ablaufen, wobei die Prozessprรผfung bestรคtigt, dass der Dienst aktiv ist.

Terminal bestรคtigt, dass der MySQL-Serverprozess nach der Installation lรคuft.

Schritt 2) โ€‹โ€‹Installieren MySQL Java Anschluss
Installieren der MySQL Java Anschluss. Dieser ist fรผr Java Abhรคngigkeiten und Verbindungszwecke, weil Hive erreicht MySQL รผber JDBC. Der nรคchste Screenshot zeigt die Paketinstallation.

Terminalinstallation von libmysql-java MySQL Java Steckverbinderpaket

Schritt 3) Erstellen Sie einen Softlink fรผr den Connector
Es wird ein symbolischer Link fรผr den Konnektor im Hive-Bibliotheksverzeichnis erstellt. Dies ist der symbolische Link zwischen Java und MySQLDadurch wird die Treiber-JAR-Datei in den Hive-Classpath aufgenommen. Der Befehl und sein Ergebnis werden unten angezeigt.

Terminal erstellt eine Softlink-Verbindung fรผr die MySQL Connector-JAR im Hive-Bibliotheksverzeichnis

Schritt 4) Konfigurieren MySQL Speicherung in Hive
Das MySQL Wie im Folgenden gezeigt, muss die Shell als Root-Konto geรถffnet werden, bevor ein Hive-Benutzer erstellt werden kann.

Terminalรถffnung MySQL Shell mit dem Befehl mysql -u root -p

  • Geben Sie mysql -u root -p gefolgt vom Passwort ein.
  • Hierbei steht โ€“u fรผr den Root-Benutzernamen und โ€“p fรผr das Passwort.
  • Nach Eingabe des obigen Befehls muss der Benutzer ein gรผltiges Passwort eingeben und anschlieรŸend die Eingabetaste drรผcken.
  • Dann wird es in den Zustand eintreten MySQL Shell-Modus

Schritt 5) Erstellen Sie einen Benutzernamen und ein Passwort
Erstellen eines Benutzernamens und eines Passworts fรผr MySQLund die Gewรคhrung von Berechtigungen. Der Screenshot unten zeigt die drei Anweisungen, die innerhalb des Prozesses ausgefรผhrt werden. MySQL Schale.

MySQL Shell erstellt das Hive-Benutzerkonto und erteilt Berechtigungen

Wir mรผssen die Befehle wie unten gezeigt ausfรผhren:

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

On MySQL 8. Die kombinierte Form der zweiten Anweisung lรคsst sich nicht mehr verarbeiten, da IDENTIFIED BY aus GRANT entfernt wurde. Erstellen Sie zuerst das Konto und erteilen Sie ihm anschlieรŸend die Berechtigung. Wiederholen Sie die Zeile CREATE USER sowohl fรผr den lokalen Host als auch fรผr den Wildcard-Host.

Schritt 6) Konfiguration der Datei hive-site.xml

  • Nachdem in Schritt 5 ein Benutzername und ein Passwort zugewiesen wurden MySQL Datenbank und gewรคhrt Berechtigungen.
  • Hier konfigurieren wir einige Eigenschaften in Hive, um eine Verbindung mit dem MySQL Datenbank.

Die Konfigurationsdatei wird aus dem Hive-Konfigurationsverzeichnis geรถffnet, wie der nรคchste Screenshot zeigt.

Terminal รถffnet die Datei hive-site.xml im Hive-Konfigurationsverzeichnis zur Bearbeitung.

Der folgende Screenshot zeigt die fertige Datei, in der alle vier Eigenschaften vorhanden sind.

Die Datei hive-site.xml zeigt die vier Verbindungseigenschaften javax.jdo.option an.

Aus dem obigen Screenshot lรคsst sich Folgendes ablesen. Hier definieren wir vier Eigenschaften, die fรผr die Etablierung notwendig sind. MySQL als Metastore in Hive.

Dies sind wie folgt:

  1. Diese Eigenschaft dient der Verbindung URLHier definieren wir die Verbindung.URL Diese Eigenschaft dient als JDBC-Verbindungszeichenfolge und reprรคsentiert gleichzeitig den Speicherort des Metastores.
  2. Diese Eigenschaft dient dem Namen des Verbindungstreibers. Hierbei ist com.mysql.jdbc.Driver der Wert, der im Wert-Tag angegeben werden muss.
  3. Diese Eigenschaft dient zur Definition des Verbindungsbenutzernamens. Hier haben wir โ€žhiveuserโ€œ als Benutzernamen definiert.
  4. Diese Eigenschaft dient zur Angabe des Verbindungspassworts. Hier haben wir โ€žhivepasswordโ€œ als Benutzerpasswort definiert.

Sobald die Eigenschaften in der Datei hive-site.xml eingetragen sind, muss die Datei manuell gespeichert (Strg+S) und geschlossen werden. AnschlieรŸend muss eine Hive-Tabelle erstellt und deren Details รผberprรผft werden. MySQL Lagerung.

Platzieren Sie diesen Code in 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>

Die beiden oben genannten Werte hรคngen von der verwendeten Konnektorversion ab. MySQL Connector/J 8 benannte die Treiberklasse in com.mysql.cj.jdbc.Driver um und erwartet auรŸerdem einen expliziten Port und eine SSL-Einstellung. URL Die Datei liest รผblicherweise jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Da das Passwort im Klartext vorliegt, sollte die Datei nur vom Hive-Dienstkonto lesbar sein.

Schritt 7) Tabelle erstellen
Erstellen Sie die Tabelle โ€žguru99โ€œ in Hive, wie im folgenden Hive-Shell-Code gezeigt.

Hive-Shell erstellt die Tabelle โ€žguru99โ€œ mit einer Spalte fรผr Integer und einer Spalte fรผr String.

Aus dem obigen Screenshot kรถnnen wir Folgendes erkennen:

  • Erstellung einer Tabelle namens โ€žguru99โ€œ mit zwei Spaltennamen
  • Die Spaltennamen werden zusammen mit ihren Datentypen angegeben, eine Spalte ist eine Ganzzahl, die andere eine Zeichenkette.

Im nรคchsten Schritt werden wir รผberprรผfen, ob es gespeichert ist in MySQL oder nicht.

Schritt 8) Geben Sie Folgendes ein MySQL Shell-Modus
Zuerst wird die Metastore-Datenbank ausgewรคhlt, und die anschlieรŸende Tabellenauflistung wird unten angezeigt.

MySQL Shell-Befehl zum Ausfรผhren von `use metastore` und `show tables` listet die Metastore-Tabellen auf.

Aus dem obigen Screenshot kรถnnen wir Folgendes erkennen:

  • Zuerst mรผssen wir die Datenbank mit โ€žuse metastoreโ€œ auswรคhlen.
  • Sobald der Metastore ausgewรคhlt ist, kรถnnen wir die darin enthaltenen Tabellen mithilfe des Befehls โ€žshow tablesโ€œ รผberprรผfen, wie im Screenshot dargestellt.
  • Unabhรคngig davon, welche Tabellen in Hive erstellt werden, werden die zugehรถrigen Metadaten unter TBLS im Verzeichnis gespeichert. MySQL Datenbank
  • Die Tabelle โ€žguru99โ€œ wird in Hive erstellt, daher werden die entsprechenden Metadaten dort gespeichert. MySQL im Rahmen von TBLS

Schritt 9) Geben Sie โ€žselect * from TBLSโ€œ ein
Prรผfen, ob die erstellte Tabelle vorhanden ist in MySQL Oder auch nicht. Die Abfrage und ihr Ergebnis sind im folgenden Screenshot zu sehen.

MySQL Die Shell fรผhrt `SELECT * FROM TBLS` aus und zeigt die Zeile der Tabelle guru99 an.

Durch Eingabe von โ€žselect * from TBLSโ€œ werden die Tabellen angezeigt, die wir im Hive-Shell-Modus erstellt haben

Aus dem obigen Screenshot kรถnnen wir Folgendes erkennen:

  • Der in Hive erstellte Tabellenname โ€žguru99โ€œ kann angezeigt werden in MySQL Shell-Modus
  • Darรผber hinaus liefert es auch Informationen wie Tabellenerstellungszeit, Zugriffszeit und andere Eigenschaften, wie im obigen Screenshot dargestellt.

Wie man das Hive-Metastore-Schema mit schematool initialisiert

Das Flag "createDatabaseIfNotExist" in der Verbindung URL Es wird zwar eine leere Metastore-Datenbank erstellt, aber nicht die etwa siebzig Tabellen, die Hive darin erwartet. In Hive 1.x und spรคteren Versionen รผbernimmt das Dienstprogramm `schematool` diese Aufgabe.ping Dies ist der mit Abstand hรคufigste Grund dafรผr, dass ein neu konfigurierter Metastore nicht startet.

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

Der Befehl liest dieselben vier Eigenschaften aus der Datei hive-site.xml, stellt eine Verbindung zum Hive-Benutzerkonto her und fรผhrt das mitgelieferte SQL-Skript aus, das zur Hive-Version passt. Nach erfolgreicher Ausfรผhrung wird eine Abschlussmeldung angezeigt, deren Status jederzeit รผberprรผft werden kann.

$HIVE_HOME/bin/schematool -dbType mysql -info

Die folgenden Flags decken den gesamten Lebenszyklus eines Metastore-Schemas ab.

Option Was sie tut,
-dbType Benennt das Backend, z. B. MySQL, Derby, PostgreSQL, Oracle oder MSSQL.
-initSchema Erstellt die Metastore-Tabellen fรผr die aktuelle Hive-Version
-die Info Gibt die in der Datenbank gespeicherte Schemaversion aus.
-Upgrade-Schema Migriert ein bestehendes Schema nach einem Hive-Upgrade
-bestรคtigen Prรผft das Schema auf fehlende Tabellen und Versionskonflikte.

Eine damit zusammenhรคngende Eigenschaft sollte vor dem ersten Start bekannt sein. Wenn hive.metastore.schema.verification auf true gesetzt ist, vergleicht Hive die Schemaversion in MySQL Es prรผft seine eigenen Einstellungen und verweigert die Ausfรผhrung bei einer Inkompatibilitรคt. Diese Prรผfung ist eine SchutzmaรŸnahme, daher ist die korrekte Reaktion, das Upgrade durchzufรผhren, anstatt es zu deaktivieren. MySQL Das Backend wird von der in der Hive-Installation beschriebenen Anwendung verwendet. Hive installieren auf Ubuntu.

Hรคufige Fehler im Hive-Metastore und wie man sie behebt

Bei den meisten Fehlern in dieser Phase wird eine von wenigen Meldungen ausgegeben, die jeweils auf einen bestimmten Schritt darรผber und nicht auf Hive selbst verweisen.

Symptom Ursache und Lรถsung
Versionsinformationen im Metastore nicht gefunden. Das Schema wurde nie erstellt. Fรผhren Sie schematool mit der Option -initSchema fรผr dieselbe Datenbank aus, die in der Verbindung angegeben ist. URL
ClassNotFoundException fรผr den JDBC-Treiber Die Connector-JAR-Datei fehlt im Hive-Bibliotheksverzeichnis, oder Connector/J 8 wird verwendet und die Klasse heiรŸt jetzt com.mysql.cj.jdbc.Driver. รœberprรผfen Sie den symbolischen Link aus Schritt 3 erneut.
Zugriff fรผr Benutzer hiveuser verweigert Die Berechtigungen wurden nur einem Host erteilt. Erstellen Sie das Konto sowohl fรผr localhost als auch fรผr den Wildcard-Host und fรผhren Sie anschlieรŸend den Befehl โ€žflush privilegesโ€œ aus.
Syntaxfehler in der Nรคhe von IDENTIFIED BY MySQL 8. Entfernen Sie IDENTIFIED BY aus der GRANT-Anweisung. Fรผhren Sie zuerst CREATE USER und anschlieรŸend GRANT aus.
Das Abrufen des รถffentlichen Schlรผssels ist nicht zulรคssig. Connector/J 8 lehnt standardmรครŸig einen unverschlรผsselten Handshake ab. Fรผgen Sie useSSL=false und allowPublicKeyRetrieval=true zum JDBC hinzu. URL in einem vertrauenswรผrdigen Netzwerk
Nach einem Hive-Upgrade fehlen Tabellen. Das Schema entspricht noch der alten Version. Fรผhren Sie schematool mit der Option `-upgradeSchema` aus, anstatt die Schemaรผberprรผfung zu deaktivieren.

Sobald der Metastore zuverlรคssig antwortet, werden die von ihm aufgezeichneten Tabellendefinitionen mit den in beschriebenen Anweisungen erstellt. Hive-Tabelle erstellen, รคndern und lรถschen.

Hรคufig gestellte Fragen

Unterstรผtzung von Hive-Schiffen fรผr Derby, MySQL, PostgreSQL, Oracle und Microsoft SQL ServerSchematool akzeptiert alle diese Datenbanktypen รผber den Parameter `-dbType`. Derby bleibt der Standard und ist weiterhin auf eine einzelne Sitzung beschrรคnkt.

Eingebettet fรผhrt Derby innerhalb des Hive-Prozesses aus. Lokal fรผhrt den Metastore-Code innerhalb von Hive aus, jedoch mit Zugriff auf eine externe Datenbank wie z. B. MySQLRemote betreibt den Metastore als eigenen Thrift-Dienst, der von mehreren Clients gemeinsam genutzt wird.

DBS-Datensรคtze: Datenbanken; TBLS-Datensรคtze: Tabellen; COLUMNS_V2-Datensรคtze: Spaltendefinitionen; SDS-Datensรคtze: Speicherdeskriptoren; PARTITIONS-Datensรคtze: Partitionseintrรคge. Diese Bezeichnungen sind intern; daher sollten Sie sie zur รœberprรผfung abfragen, anstatt sie manuell zu bearbeiten.

Speichern Sie die Datei in einem Hadoop-Credential-Provider-Keystore und verweisen Sie `hive.metastore.credential.provider.path` auf diese Datei. Entfernen Sie anschlieรŸend den Klartextwert. Die Einschrรคnkung der Dateiberechtigungen fรผr `hive-site.xml` ist die minimale Ausweichlรถsung.

Die Dateien auf HDFS bleiben erhalten, aber alle Tabellen-, Partitions- und Spaltendefinitionen verschwinden, und Hive kann sie nicht mehr lesen. MySQL Die Sicherung der Metastore-Datenbank ist daher Teil der normalen Cluster-Datensicherung.

Der Thrift-Metastore-Dienst lauscht standardmรครŸig auf Port 9083, der รผber hive.metastore.port festgelegt wird. Clients erreichen ihn รผber hive.metastore.uris anstatt รผber direkte JDBC-Anmeldeinformationen, wodurch das Datenbankpasswort von den Client-Rechnern ferngehalten wird.

Ja. Die Anomalieerkennung in den Metastore-Abfrageprotokollen erkennt plรถtzliche Aufrufspitzen, langsame Partitionslisten und unkontrolliertes Tabellenwachstum, bevor Jobs ein Timeout verursachen. Das Modell hebt potenzielle Ursachen hervor, die jedoch noch von einem Administrator bestรคtigt werden.

Copilot erstellt den javax.jdo.option-Eigenschaftsblock anhand eines kurzen Kommentars, und Agentenassistenten kรถnnen die gesamte Einrichtung skripten. รœberprรผfen Sie die Treiberklasse und den Port, da die Trainingsdaten noch den รคlteren Konnektornamen bevorzugen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: