Πώς να εγκαταστήσετε και να ρυθμίσετε το HIVE Metastore με την MYSQL
⚡ Έξυπνη Σύνοψη
Το metastore Hive αποθηκεύει κάθε ορισμό πίνακα, όνομα στήλης και τύπο δεδομένων πίσω από το Apache Hive και μετακινεί αυτό το αποθετήριο από την προεπιλεγμένη βάση δεδομένων Derby σε MySQL είναι αυτό που επιτρέπει σε πολλούς χρήστες να συνδέονται ταυτόχρονα.
Τι είναι το HIVE Metastore;
Το Hive metastore είναι ένα αποθετήριο που αποθηκεύει μεταδεδομένα (ονόματα στηλών, τύπους δεδομένων, σχόλια κ.λπ.) που σχετίζονται με Κυψέλη Apache MySQL or PostgreSQL. Αυτό το metastore Hive υλοποιείται χρησιμοποιώντας πίνακες σε μια σχεσιακή βάση δεδομένων.
Τίποτα στο metastore δεν περιέχει τις ίδιες τις γραμμές. Οι εγγραφές παραμένουν στο HDFS και το metastore καταγράφει μόνο πού βρίσκεται κάθε πίνακας και πώς ονομάζονται οι στήλες του, γι' αυτό και η απώλειά του κοστίζει στο σχήμα και όχι στα δεδομένα.
Γιατί να χρησιμοποιήσετε MySQL στο Hive ως Metastore
Το backend του metastore είναι μια επιλογή, όχι ένα σταθερό μέρος του Hive, και η προεπιλογή που παρέχεται είναι σκόπιμα ελάχιστη. Τρία όρια απομακρύνουν σχεδόν κάθε εγκατάσταση από αυτό.
- Από προεπιλογή, το Hive συνοδεύεται από τη βάση δεδομένων Derby ως metastore.
- Το Derby μπορεί να υποστηρίξει μόνο έναν ενεργό χρήστη κάθε φορά.
- Το Derby δεν συνιστάται σε περιβάλλον παραγωγής.
Έτσι, η λύση εδώ είναι
- Χρήση MySQL ως μετα-αποθήκευση στο backend για τη σύνδεση πολλαπλών χρηστών με το Hive ταυτόχρονα
- MySQL είναι η καλύτερη επιλογή για το αυτόνομο metastore
Πώς να εγκαταστήσετε και να ρυθμίσετε το Hive Metastore στο MySQL βάση δεδομένων
Τα εννέα παρακάτω βήματα εκτελούνται με τη σειρά σε έναν υπολογιστή που έχει ήδη εγκατεστημένα τα Hadoop και Hive. Κάθε βήμα ολοκληρώνεται με ένα στιγμιότυπο οθόνης της πραγματικής εξόδου του τερματικού ή του κελύφους.
Βήμα 1) Εγκατάσταση MySQL διακομιστή
Σε αυτό το βήμα, πρόκειται να εκτελέσουμε δύο εργασίες
- Εγκατάσταση mysql-server
- Έλεγχος του mysql-server και της διαδικασίας του
Χρήση του sudo apt-get να εγκαταστήσετε το mysql-server εντολή, μπορούμε να κατεβάσουμε MySQL διακομιστή. Εγκατάσταση MySQL όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Μετά την επιτυχή εγκατάσταση, MySQL θα εκτελεστεί όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης, όπου ο έλεγχος διεργασίας επιβεβαιώνει ότι η υπηρεσία είναι ενεργή.
Βήμα 2) Εγκατάσταση MySQL Java Connector
εγκατάσταση του MySQL Java υποδοχή. Αυτό είναι για Java εξαρτήσεις και σκοπούς σύνδεσης, επειδή το Hive φτάνει MySQL μέσω JDBC. Το επόμενο στιγμιότυπο οθόνης δείχνει την εγκατάσταση του πακέτου.
Βήμα 3) Δημιουργήστε μαλακό σύνδεσμο για σύνδεσμο
Δημιουργία ενός soft link για τη σύνδεση στον κατάλογο Hive lib. Αυτός είναι ο soft link μεταξύ Java και MySQL, και είναι αυτό που τοποθετεί το JAR του προγράμματος οδήγησης στη διαδρομή κλάσεων Hive. Η εντολή και το αποτέλεσμά της εμφανίζονται παρακάτω.
Βήμα 4) Ρύθμιση παραμέτρων MySQL αποθήκευση στην κυψέλη
The MySQL Το shell πρέπει να ανοιχτεί ως λογαριασμός root πριν δημιουργηθεί οποιοσδήποτε χρήστης Hive, όπως φαίνεται στη συνέχεια.
- Πληκτρολογήστε mysql –u root –p ακολουθούμενο από τον κωδικό πρόσβασης
- Εδώ το –u αντιπροσωπεύει το όνομα χρήστη root και το –p υποδηλώνει τον κωδικό πρόσβασης
- Αφού εισαγάγει την παραπάνω εντολή, ο χρήστης πρέπει να εισάγει έναν έγκυρο κωδικό πρόσβασης και στη συνέχεια να πατήσει enter.
- Τότε θα εισέλθει σε MySQL λειτουργία κελύφους
Βήμα 5) Δημιουργήστε όνομα χρήστη και κωδικό πρόσβασης
Δημιουργία ονόματος χρήστη και κωδικού πρόσβασης για MySQLκαι παραχώρηση δικαιωμάτων. Το παρακάτω στιγμιότυπο οθόνης δείχνει τις τρεις εντολές που εκτελούνται μέσα στο MySQL κέλυφος.
Πρέπει να εκτελέσουμε τις εντολές όπως φαίνεται παρακάτω,
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8 η συνδυασμένη μορφή της δεύτερης πρότασης δεν αναλύεται πλέον, επειδή η IDENTIFIED BY αφαιρέθηκε από την εντολή GRANT. Δημιουργήστε πρώτα τον λογαριασμό και, στη συνέχεια, χορηγήστε του την εντολή και επαναλάβετε τη γραμμή CREATE USER για τον κεντρικό υπολογιστή localhost καθώς και για τον κεντρικό υπολογιστή wildcard.
Βήμα 6) Ρύθμιση παραμέτρων του hive-site.xml
- Αφού το Βήμα 5 εκχωρήσει ένα όνομα χρήστη και έναν κωδικό πρόσβασης στο MySQL βάση δεδομένων και παραχωρεί δικαιώματα.
- Εδώ θα διαμορφώσουμε ορισμένες ιδιότητες στο Hive για να έχουμε μια σύνδεση με το MySQL βάση δεδομένων.
Το αρχείο ρυθμίσεων ανοίγει από τον κατάλογο Hive conf, όπως φαίνεται στο επόμενο στιγμιότυπο οθόνης.
Το στιγμιότυπο οθόνης που ακολουθεί δείχνει το ολοκληρωμένο αρχείο με και τις τέσσερις ιδιότητες στη θέση τους.
Από το παραπάνω στιγμιότυπο οθόνης, παρατηρούμε τα εξής. Εδώ ορίζουμε 4 ιδιότητες που είναι απαραίτητες για τη δημιουργία MySQL ως το metastore στο Hive.
Αυτά είναι τα εξής:
- Αυτή η ιδιότητα είναι για τη σύνδεση URLΕδώ ορίζουμε τη ΣύνδεσηURL σε αυτήν την ιδιότητα. Λειτουργεί ως συμβολοσειρά σύνδεσης JDBC και αντιπροσωπεύει επίσης την τοποθεσία του μετα-αποθηκευτικού χώρου.
- Αυτή η ιδιότητα αφορά το όνομα του προγράμματος οδήγησης σύνδεσης. Εδώ, η τιμή com.mysql.jdbc.Driver είναι η τιμή που πρέπει να αναφέρουμε στην ετικέτα τιμής.
- Αυτή η ιδιότητα χρησιμοποιείται για τον ορισμό του ονόματος χρήστη της σύνδεσης. Σε αυτήν την περίπτωση, ορίσαμε το "hiveuser" ως το όνομα χρήστη.
- Αυτή η ιδιότητα χρησιμοποιείται για την αναφορά του κωδικού πρόσβασης σύνδεσης. Σε αυτό, ορίσαμε το "hivepassword" ως τον κωδικό πρόσβασης χρήστη.
Μόλις τοποθετηθούν οι ιδιότητες στο hive-site.xml, πρέπει να αποθηκεύσουμε χειροκίνητα (Ctrl+S) και να κλείσουμε το αρχείο. Αφού κλείσουμε αυτό το αρχείο, πρέπει να δημιουργήσουμε έναν πίνακα Hive και να ελέγξουμε τις λεπτομέρειες του πίνακα στο MySQL αποθήκευση.
Τοποθετήστε αυτόν τον κωδικό στο 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>
Δύο παραπάνω τιμές εξαρτώνται από την έκδοση σύνδεσης που χρησιμοποιείται. MySQL Το Connector/J 8 μετονόμασε την κλάση του προγράμματος οδήγησης σε com.mysql.cj.jdbc.Driver και αναμένει επίσης μια σαφή ρύθμιση θύρας και SSL, επομένως ένα σύγχρονο URL συνήθως διαβάζει το jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Επειδή ο κωδικός πρόσβασης βρίσκεται σε μορφή απλού κειμένου, το αρχείο θα πρέπει να είναι αναγνώσιμο μόνο από τον λογαριασμό υπηρεσίας Hive.
Βήμα 7) Δημιουργία πίνακα
Δημιουργήστε τον πίνακα "guru99" στο Hive, όπως φαίνεται στο κέλυφος Hive παρακάτω.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής
- Δημιουργία ενός πίνακα με όνομα «guru99» με δύο ονόματα στηλών
- Τα ονόματα των στηλών αναφέρονται με τους τύπους δεδομένων τους, το ένα ακέραιος αριθμός και το άλλο συμβολοσειρά
Στο επόμενο βήμα, θα ελέγξουμε αν είναι αποθηκευμένο στο MySQL ή όχι.
Βήμα 8) Εισέλθετε στο MySQL λειτουργία κελύφους
Η βάση δεδομένων metastore επιλέγεται πρώτα και η λίστα πίνακα που ακολουθεί εμφανίζεται παρακάτω.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής
- Αρχικά, πρέπει να επιλέξουμε τη βάση δεδομένων με την εντολή "use metastore".
- Μόλις επιλεγεί το metastore, μπορούμε να ελέγξουμε τους πίνακες που υπάρχουν σε αυτό χρησιμοποιώντας την εντολή "show tables" όπως φαίνεται στο στιγμιότυπο οθόνης.
- Όποιοι πίνακες και αν δημιουργούνται στο Hive, τα μεταδεδομένα που αντιστοιχούν σε αυτούς τους πίνακες αποθηκεύονται στο TBLS. MySQL βάσεις δεδομένων
- Ο πίνακας "guru99" δημιουργείται στο Hive, επομένως τα αντίστοιχα μεταδεδομένα αποθηκεύονται στο MySQL υπό TBLS
Βήμα 9) Πληκτρολογήστε Select * από το TBLS
Έλεγχος εάν ο δημιουργημένος πίνακας υπάρχει στο MySQL ή όχι. Το ερώτημα και το αποτέλεσμά του εμφανίζονται στο παρακάτω στιγμιότυπο οθόνης.
Εισάγοντας Select * από το TBLS, θα εμφανιστούν οι πίνακες που δημιουργήσαμε σε λειτουργία κελύφους Hive
Από το παραπάνω στιγμιότυπο οθόνης μπορούμε να παρατηρήσουμε τα εξής:
- Το όνομα του πίνακα "guru99" που δημιουργήθηκε στο Hive μπορεί να εμφανιστεί σε MySQL λειτουργία κελύφους
- Εκτός από αυτό, θα παρέχει επίσης πληροφορίες όπως ο χρόνος δημιουργίας πίνακα, ο χρόνος πρόσβασης και άλλες ιδιότητες, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης.
Πώς να αρχικοποιήσετε το σχήμα Hive Metastore με το schematool
Η σημαία createDatabaseIfNotExist στη σύνδεση URL δημιουργεί μια κενή βάση δεδομένων metastore, αλλά δεν δημιουργεί τους περίπου εβδομήντα πίνακες που αναμένει το Hive μέσα σε αυτήν. Στο Hive 1.x και σε νεότερες εκδόσεις, αυτή η εργασία ανήκει στο βοηθητικό πρόγραμμα schematool και παραλείψτε τοping Είναι ο πιο συνηθισμένος λόγος για τον οποίο ένα πρόσφατα διαμορφωμένο metastore αρνείται να ξεκινήσει.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
Η εντολή διαβάζει τις ίδιες τέσσερις ιδιότητες από το hive-site.xml, συνδέεται με τον λογαριασμό hiveuser και εκτελεί το πακέτο script SQL που ταιριάζει με την έκδοση Hive. Μια επιτυχημένη εκτέλεση ολοκληρώνεται με ένα μήνυμα ολοκλήρωσης, μετά το οποίο η κατάσταση μπορεί να επιβεβαιωθεί ανά πάσα στιγμή.
$HIVE_HOME/bin/schematool -dbType mysql -info
Οι παρακάτω σημαίες καλύπτουν ολόκληρη τη διάρκεια ζωής ενός σχήματος μετααποθήκευσης.
| Επιλογή | Τι κάνει |
|---|---|
| -dbType | Ονομάζει το backend, όπως mysql, derby, postgres, oracle ή mssql |
| -initSchema | Δημιουργεί τους πίνακες μετααποθήκευσης για την τρέχουσα έκδοση του Hive |
| - πληροφορίες | Αναφέρει την έκδοση σχήματος που έχει καταγραφεί στη βάση δεδομένων |
| -αναβάθμισηΣχήματος | Μετεγκαθιστά ένα υπάρχον σχήμα μετά από αναβάθμιση σε Hive |
| -επικυρώνω | Ελέγχει το σχήμα για πίνακες που λείπουν και αναντιστοιχίες εκδόσεων |
Μια σχετική ιδιότητα που αξίζει να γνωρίζετε πριν από την πρώτη εκκίνηση. Όταν η τιμή hive.metastore.schema.verification είναι true, το Hive συγκρίνει την έκδοση σχήματος στο MySQL έναντι του δικού του και αρνείται να εκτελεστεί σε περίπτωση αναντιστοιχίας. Αυτός ο έλεγχος αποτελεί μέτρο ασφαλείας, επομένως η σωστή αντίδραση είναι να εκτελεστεί η αναβάθμιση αντί να απενεργοποιηθεί. Το ίδιο MySQL Το backend χρησιμοποιείται από την εγκατάσταση Hive που καλύπτεται στο εγκαταστήστε το Hive στο Ubuntu.
Συνηθισμένα σφάλματα Hive Metastore και πώς να τα διορθώσετε
Οι περισσότερες αποτυχίες σε αυτό το στάδιο παράγουν ένα από τα λίγα μηνύματα, και το καθένα δείχνει ένα συγκεκριμένο βήμα παραπάνω και όχι το ίδιο το Hive.
| Σύμπτωμα | Αιτία και διόρθωση |
|---|---|
| Δεν βρέθηκαν πληροφορίες έκδοσης στο metastore | Το σχήμα δεν δημιουργήθηκε ποτέ. Εκτελέστε το schematool με -initSchema στην ίδια βάση δεδομένων που ονομάζεται στη σύνδεση. URL |
| ClassNotFoundException για το πρόγραμμα οδήγησης JDBC | Το αρχείο JAR σύνδεσης λείπει από τον κατάλογο lib του Hive ή χρησιμοποιείται το Connector/J 8 και η κλάση είναι τώρα com.mysql.cj.jdbc.Driver. Ελέγξτε ξανά τον μαλακό σύνδεσμο από το Βήμα 3. |
| Η πρόσβαση απαγορεύτηκε για τον χρήστη hiveuser | Τα δικαιώματα παραχωρήθηκαν μόνο σε έναν κεντρικό υπολογιστή. Δημιουργήστε τον λογαριασμό τόσο για τον localhost όσο και για τον κεντρικό υπολογιστή με wildcard και, στη συνέχεια, εκτελέστε τα δικαιώματα εκκαθάρισης. |
| Σφάλμα σύνταξης κοντά στο IDENTIFIED BY | MySQL Το 8 αφαιρέθηκε από την πρόταση GRANT. Εκτελέστε πρώτα την εντολή CREATE USER και στη συνέχεια την εντολή GRANT. |
| Δεν επιτρέπεται η ανάκτηση δημόσιου κλειδιού | Το Connector/J 8 αρνείται μια μη κρυπτογραφημένη χειραψία από προεπιλογή. Προσθέστε τις συναρτήσεις useSSL=false και allowPublicKeyRetrieval=true στο JDBC. URL σε ένα αξιόπιστο δίκτυο |
| Λείπουν πίνακες μετά από αναβάθμιση σε Hive | Το σχήμα εξακολουθεί να ταιριάζει με την παλιά έκδοση. Εκτελέστε το schematool με -upgradeSchema αντί να απενεργοποιήσετε την επαλήθευση σχήματος. |
Μόλις το metastore απαντήσει αξιόπιστα, οι ορισμοί πινάκων που καταγράφει δημιουργούνται με τις δηλώσεις που περιγράφονται στο Η κυψέλη δημιουργεί, τροποποιεί και αποθέτει πίνακα.









