Τι είναι η κυψέλη; Architecture & Modes

⚡ Έξυπνη Σύνοψη

Το Hive είναι το επίπεδο SQL του οικοσυστήματος Hadoop, μετατρέποντας τις εντολές HiveQL σε κατανεμημένες εργασίες που διαβάζουν δομημένα δεδομένα που βρίσκονται ήδη σε HDFS, επομένως οι αναλυτές υποβάλλουν ερωτήματα σε πίνακες petabyte χωρίς να γράφουν οι ίδιοι κώδικα MapReduce.

  • 🐝 Αυτό που είναι: Ένα εργαλείο ETL και αποθήκευσης δεδομένων που προσθέτει πίνακες, γραμμές και στήλες πάνω από αρχεία που είναι αποθηκευμένα σε HDFS.
  • 🗂️ Μετακατάστημα: Οι πληροφορίες σχήματος βρίσκονται σε ένα σχεσιακό μετααποθετήριο, υποστηριζόμενο από το Derby για έναν χρήστη και από MySQL για κοινόχρηστη πρόσβαση.
  • 🆚 Εναντίον ενός RDBMS: Το Hive επικυρώνει το σχήμα κατά την ανάγνωση, κλιμακώνεται οριζόντια και ευνοεί τις μεγάλες σαρώσεις έναντι των ενημερώσεων σε επίπεδο γραμμής που χειρίζεται μια βάση δεδομένων.
  • Τρία επίπεδα: Οι πελάτες, οι υπηρεσίες και ο χώρος αποθήκευσης αποτελούν την αρχιτεκτονική, με τον οδηγό να συντονίζει τον μεταγλωττιστή, το μετα-αποθετήριο και τη μηχανή εκτέλεσης.
  • 🔀 Δύο τρόποι λειτουργίας: Η τοπική λειτουργία ταιριάζει σε έναν μόνο κόμβο δεδομένων και μικρά αρχεία, ενώ η λειτουργία MapReduce κατανέμει την εκτέλεση σε ένα σύμπλεγμα πολλαπλών κόμβων.
  • 🔌 HiveServer2: Η διεπαφή HS2 που βασίζεται σε Thrift προσθέτει ταυτόχρονη λειτουργία πολλαπλών πελατών και έλεγχο ταυτότητας για απομακρυσμένες συνεδρίες.

Αρχιτεκτονική και λειτουργίες κυψέλης

Τι είναι η κυψέλη;

Το Hive είναι ένα εργαλείο ETL και αποθήκευσης δεδομένων που αναπτύχθηκε πάνω στο Hadoop Distributed File System (HDFS). Το Hive διευκολύνει την εκτέλεση λειτουργιών όπως

  • Ενθυλάκωση δεδομένων
  • Ad-hoc ερωτήματα
  • Ανάλυση τεράστιων συνόλων δεδομένων

Σημαντικά χαρακτηριστικά του Hive

Τα παρακάτω σημεία εξηγούν τι διαφοροποιεί το Hive από ένα απλό πρόγραμμα MapReduce.

  • Στο Hive, πρώτα δημιουργούνται πίνακες και βάσεις δεδομένων και στη συνέχεια φορτώνονται δεδομένα σε αυτούς τους πίνακες.
  • Το Hive είναι μια αποθήκη δεδομένων σχεδιασμένη για τη διαχείριση και την υποβολή ερωτημάτων μόνο σε δομημένα δεδομένα που είναι αποθηκευμένα σε πίνακες.
  • Ενώ ασχολείται με δομημένα δεδομένα, το MapReduce δεν διαθέτει λειτουργίες βελτιστοποίησης και χρηστικότητας όπως τα UDF, αλλά το πλαίσιο Hive διαθέτει. Η βελτιστοποίηση ερωτημάτων αναφέρεται σε έναν αποτελεσματικό τρόπο εκτέλεσης ερωτημάτων όσον αφορά την απόδοση.
  • Η γλώσσα προγραμματισμού SQL του Hive διαχωρίζει τον χρήστη από την πολυπλοκότητα του προγραμματισμού MapReduce. Επαναχρησιμοποιεί γνωστές έννοιες από τον κόσμο των σχεσιακών βάσεων δεδομένων, όπως πίνακες, γραμμές, στήλες και σχήματα, για ευκολία εκμάθησης.
  • Ο προγραμματισμός του Hadoop λειτουργεί σε επίπεδα αρχεία. Έτσι, το Hive μπορεί να χρησιμοποιήσει δομές καταλόγων για να "χώρισμα" δεδομένα για τη βελτίωση της απόδοσης σε ορισμένα ερωτήματα.
  • Ένα σημαντικό στοιχείο του Hive είναι το metastore, το οποίο χρησιμοποιείται για την αποθήκευση πληροφοριών σχήματος. Αυτό το metastore συνήθως βρίσκεται σε μια σχεσιακή βάση δεδομένων. Μπορούμε να αλληλεπιδράσουμε με το Hive χρησιμοποιώντας μεθόδους όπως
    • GUI ιστού
    • Java Διασύνδεση συνδεσιμότητας βάσεων δεδομένων (JDBC).
  • Οι περισσότερες αλληλεπιδράσεις τείνουν να πραγματοποιούνται μέσω μιας διεπαφής γραμμής εντολών (CLI). Το Hive παρέχει ένα CLI για τη σύνταξη ερωτημάτων Hive χρησιμοποιώντας τη γλώσσα ερωτημάτων Hive (HQL).
  • Γενικά, η σύνταξη HQL είναι παρόμοια με την SQL σύνταξη με την οποία είναι εξοικειωμένοι οι περισσότεροι αναλυτές δεδομένων. Το παρακάτω δείγμα ερωτήματος εμφανίζει όλες τις εγγραφές που υπάρχουν στο αναφερόμενο όνομα πίνακα.
    • Δείγμα ερωτήματος : Επιλέξτε * από
  • Το Hive υποστηρίζει τέσσερις μορφές αρχείων, οι οποίες είναι TEXTFILE, SEQUENCEFILE, ORC και RCFILE (Αρχείο στήλης εγγραφής).
  • Για την αποθήκευση μεταδεδομένων ενός χρήστη, το Hive χρησιμοποιεί τη βάση δεδομένων Derby και για μεταδεδομένα πολλαπλών χρηστών ή κοινόχρηστα μεταδεδομένα το Hive χρησιμοποιεί MySQL.

Για τη ρύθμιση MySQL ως βάση δεδομένων και για την αποθήκευση πληροφοριών μεταδεδομένων, ανατρέξτε στο σεμινάριο διαμόρφωση του μετακαταστήματος Hive με MySQL, το οποίο προκύπτει από το Οδηγός εγκατάστασης κυψέλης.

Μερικά από τα βασικά σημεία για το Hive:

  • Η κύρια διαφορά μεταξύ HQL και SQL είναι ότι ένα ερώτημα Hive εκτελείται στην υποδομή του Hadoop και όχι σε μια παραδοσιακή βάση δεδομένων.
  • Η εκτέλεση ερωτήματος Hive είναι μια σειρά από αυτόματα δημιουργούμενα ΜΕΙΩΣΗ ΧΑΡΤΗ θέσεις εργασίας.
  • Το Hive υποστηρίζει τις έννοιες διαμέρισης και κάδου για εύκολη ανάκτηση δεδομένων όταν ο πελάτης εκτελεί το ερώτημα.
  • Η Hive υποστηρίζει προσαρμοσμένες εφαρμογές UDF (συναρτήσεις που ορίζονται από τον χρήστη) για καθαρισμό δεδομένων, φιλτράρισμα και παρόμοιες εργασίες. Σύμφωνα με τις απαιτήσεις των προγραμματιστών, μπορεί κανείς να ορίσει UDFs Hive.

Hive Vs Σχεσιακές Βάσεις Δεδομένων

Το Hive εκτελεί λειτουργίες που οι σχεσιακές βάσεις δεδομένων δεν μπορούν. Όταν τα δεδομένα εκτελούνται σε petabytes, η επιστροφή αποτελεσμάτων σε δευτερόλεπτα έχει σημασία και το Hive το κάνει αυτό αποτελεσματικά. Οι βασικές διαφορές είναι οι ακόλουθες.

Οι σχεσιακές βάσεις δεδομένων είναι «σχήμα κατά την ανάγνωση και σχήμα κατά την εγγραφή»: πρώτα δημιουργείται ένας πίνακας και στη συνέχεια εισάγονται δεδομένα σε αυτόν τον πίνακα. Σε πίνακες σχεσιακών βάσεων δεδομένων, μπορούν να εκτελεστούν συναρτήσεις όπως εισαγωγές, ενημερώσεις και τροποποιήσεις.

Η κυψέλη είναι «σχήμα μόνο για ανάγνωση»Έτσι, συναρτήσεις όπως η ενημέρωση και η τροποποίηση δεν λειτουργούσαν σε πρώιμες εκδόσεις, επειδή ένα ερώτημα Hive σε ένα τυπικό σύμπλεγμα εκτελείται σε πολλαπλούς DataNodes, γεγονός που καθιστούσε αδύνατη την ενημέρωση και την τροποποίηση δεδομένων σε πολλαπλούς κόμβους (εκδόσεις Hive κάτω των 0.13).

Η Hive υποστηρίζει επίσης το «Διαβάστε πολλά, γράψτε μία φορά» μοτίβο, έτσι ώστε στις πρόσφατες εκδόσεις ένας πίνακας να μπορεί να ενημερωθεί μετά την εισαγωγή.

ΣΗΜΕΊΩΣΗ: Οι νεότερες εκδόσεις του Hive διαθέτουν ενημερωμένες λειτουργίες. Η έκδοση 0.14 του Hive εισήγαγε τις λειτουργίες UPDATE και DELETE ως νέες λειτουργίες, ενώ οι νεότερες εκδόσεις πρόσθεσαν πλήρη υποστήριξη συναλλαγών ACID.

Ο παρακάτω πίνακας συμπυκνώνει τη σύγκριση.

Άποψη Σχεσιακή βάση δεδομένων Κυψέλη Apache
Επικύρωση σχήματος Κατά την εγγραφή Κατά την ανάγνωση
Τυπικός όγκος δεδομένων Γιγαμπάιτ σε τεραμπάιτ Τεραμπάιτ σε πεταμπάιτ
Φόρτο εργασίας Το OLTP σε επίπεδο γραμμής διαβάζει και γράφει Πλήρης σάρωση αναλυτικών στοιχείων παρτίδας
Γλώσσα ερωτήματος SQL HQL, μια διάλεκτος εμπνευσμένη από την SQL
Εκτέλεση Μηχανή βάσης δεδομένων Κατανεμημένες εργασίες συμπλέγματος

Κυψέλη Archiδομή

Το παρακάτω διάγραμμα εξηγεί την Apache Η αρχιτεκτονική της κυψέλης λεπτομερώς.

Διάγραμμα αρχιτεκτονικής Apache Hive που δείχνει πελάτες, υπηρεσίες, χώρο αποθήκευσης και υπολογισμούς

Η κυψέλη αποτελείται κυρίως από 3 βασικά μέρη:

  1. πελάτες της Hive
  2. Υπηρεσίες κυψέλης
  3. Αποθήκευση και υπολογισμός Hive

Πελάτες Hive

Το Hive παρέχει διαφορετικά προγράμματα οδήγησης για επικοινωνία με διαφορετικούς τύπους εφαρμογών. Για εφαρμογές που βασίζονται σε Thrift, παρέχει ένα πρόγραμμα-πελάτη Thrift για επικοινωνία.

Για Java Για σχετικές εφαρμογές, παρέχει προγράμματα οδήγησης JDBC. Για οποιονδήποτε άλλο τύπο εφαρμογής, παρέχει προγράμματα οδήγησης ODBC. Αυτοί οι υπολογιστές-πελάτες και τα προγράμματα οδήγησης επικοινωνούν με τη σειρά τους με τον διακομιστή Hive στις υπηρεσίες Hive.

Υπηρεσίες Κυψέλης

Οι αλληλεπιδράσεις του πελάτη με το Hive πραγματοποιούνται μέσω των υπηρεσιών του Hive. Εάν ο πελάτης θέλει να εκτελέσει οποιαδήποτε λειτουργία που σχετίζεται με το ερώτημα στο Hive, πρέπει να επικοινωνήσει μέσω των υπηρεσιών του Hive.

Το CLI λειτουργεί ως η υπηρεσία Hive για λειτουργίες DDL. Όλα τα προγράμματα οδήγησης επικοινωνούν με τον διακομιστή Hive και το κύριο πρόγραμμα οδήγησης στις υπηρεσίες Hive, όπως φαίνεται στο παραπάνω διάγραμμα αρχιτεκτονικής.

Το πρόγραμμα οδήγησης στις υπηρεσίες Hive είναι το κύριο πρόγραμμα οδήγησης: επικοινωνεί με JDBC, ODBC και άλλες εφαρμογές που αφορούν συγκεκριμένα προγράμματα-πελάτες και στη συνέχεια μεταβιβάζει τα αιτήματά τους στο metastore και στο σύστημα αρχείων για περαιτέρω επεξεργασία.

Αποθήκευση και Υπολογισμός Κυψέλης

Οι υπηρεσίες Hive, όπως το metastore, το σύστημα αρχείων και ο job client, επικοινωνούν με τη σειρά τους με το χώρο αποθήκευσης Hive και εκτελούν τις ακόλουθες ενέργειες:

  • Οι πληροφορίες μεταδεδομένων σχετικά με τους πίνακες που δημιουργούνται στο Hive αποθηκεύονται στο Hive. βάση δεδομένων μετακαταστήματος.
  • Τα αποτελέσματα των ερωτημάτων και τα δεδομένα που φορτώνονται στους πίνακες αποθηκεύονται στο σύμπλεγμα Hadoop στο ΚΑΕ.

Ροή εκτέλεσης εργασίας

Το παρακάτω διάγραμμα tracένα ερώτημα από τη διεπαφή χρήστη στα DataNodes και πίσω.

Διάγραμμα ροής εκτέλεσης εργασίας κυψέλης tracυποβολή ερωτήματος από τη διεπαφή χρήστη στα DataNodes

Από το παραπάνω διάγραμμα μπορούμε να κατανοήσουμε τη ροή εκτέλεσης εργασιών στο Hive με το Hadoop. Η ροή δεδομένων στο Hive συμπεριφέρεται με το ακόλουθο μοτίβο.

  1. Εκτέλεση ερωτήματος από το περιβάλλον χρήστη (UI)
  2. Το πρόγραμμα οδήγησης αλληλεπιδρά με τον μεταγλωττιστή για να λάβει το σχέδιο. (Εδώ, το σχέδιο αναφέρεται στη διαδικασία εκτέλεσης ερωτήματος και στη συλλογή σχετικών πληροφοριών μεταδεδομένων.)
  3. Ο μεταγλωττιστής δημιουργεί το σχέδιο για την εκτέλεση της εργασίας. Ο μεταγλωττιστής επικοινωνεί με το metastore για να λάβει το αίτημα μεταδεδομένων.
  4. Το metastore στέλνει πληροφορίες μεταδεδομένων πίσω στον μεταγλωττιστή
  5. Ο μεταγλωττιστής επικοινωνεί με τον οδηγό με το προτεινόμενο σχέδιο εκτέλεσης του ερωτήματος
  6. Ο οδηγός στέλνει σχέδια εκτέλεσης στη μηχανή εκτέλεσης
  7. Η μηχανή εκτέλεσης (EE) λειτουργεί ως γέφυρα μεταξύ του Hive και του Hadoop για την επεξεργασία του ερωτήματος, συμπεριλαμβανομένων των λειτουργιών DFS:
    • Ο EE επικοινωνεί πρώτα με τον NameNode και στη συνέχεια με τους DataNodes για να λάβει τις τιμές που είναι αποθηκευμένες σε πίνακες.
    • Το EE ανακτά τις επιθυμητές εγγραφές από τα DataNodes. Τα πραγματικά δεδομένα του πίνακα βρίσκονται μόνο στους κόμβους δεδομένων. Από το NameNode ανακτά μόνο μεταδεδομένα για το ερώτημα.
    • Συλλέγει πραγματικά δεδομένα από τους κόμβους δεδομένων που σχετίζονται με το αναφερόμενο ερώτημα
    • Το EE επικοινωνεί αμφίδρομα με το metastore για να εκτελέσει λειτουργίες DDL (γλώσσα ορισμού δεδομένων) όπως ΔΗΜΙΟΥΡΓΙΑ, ΑΠΟΡΡΙΨΗ και ΤΡΟΠΟΠΟΙΗΣΗ σε πίνακες και βάσεις δεδομένων. Το metastore αποθηκεύει μόνο ονόματα βάσεων δεδομένων, πινάκων και στηλών.
    • Το EE με τη σειρά του επικοινωνεί με δαίμονες Hadoop όπως το NameNode, το DataNodes και το job. tracker για να εκτελέσει το ερώτημα πάνω από το σύστημα αρχείων Hadoop
  1. Ανάκτηση αποτελεσμάτων από τον οδηγό
  2. Αποστολή αποτελεσμάτων στη μηχανή εκτέλεσης. Μόλις τα αποτελέσματα ανακτηθούν από τους κόμβους δεδομένων στον EE, αυτός τα στέλνει πίσω στον οδηγό και στο UI (front end).

Το Hive παραμένει σε επαφή με το σύστημα αρχείων Hadoop και τους δαίμονές του μέσω της μηχανής εκτέλεσης. Το διακεκομμένο βέλος στο διάγραμμα δείχνει αυτήν την επικοινωνία.

Διαφορετικοί τρόποι Hive

Το Hive μπορεί να λειτουργήσει σε δύο λειτουργίες ανάλογα με το μέγεθος των κόμβων δεδομένων στο Hadoop. Αυτές οι λειτουργίες είναι:

  • Τοπική λειτουργία
  • Λειτουργία MapReduce

Πότε να χρησιμοποιείτε την τοπική λειτουργία

  • Εάν το Hadoop είναι εγκατεστημένο σε ψευδο-κατανεμημένη λειτουργία με έναν κόμβο δεδομένων, χρησιμοποιούμε το Hive σε αυτήν τη λειτουργία.
  • Εάν το μέγεθος των δεδομένων είναι αρκετά μικρό ώστε να περιορίζεται σε ένα μόνο τοπικό μηχάνημα, μπορούμε να χρησιμοποιήσουμε αυτήν τη λειτουργία
  • Η επεξεργασία θα είναι πολύ γρήγορη σε μικρότερα σύνολα δεδομένων που υπάρχουν στο τοπικό μηχάνημα

Πότε να χρησιμοποιείτε τη λειτουργία MapReduce

  • Εάν το Hadoop έχει πολλαπλούς κόμβους δεδομένων και τα δεδομένα κατανέμονται σε διαφορετικούς κόμβους, χρησιμοποιούμε το Hive σε αυτήν τη λειτουργία.
  • Εκτελείται σε μεγάλες ποσότητες δεδομένων και το ερώτημα εκτελείται παράλληλα
  • Η επεξεργασία μεγάλων συνόλων δεδομένων με καλύτερη απόδοση μπορεί να επιτευχθεί μέσω αυτής της λειτουργίας

Στο Hive μπορούμε να ορίσουμε μια ιδιότητα που να δηλώνει σε ποια λειτουργία θα πρέπει να λειτουργεί το Hive. Από προεπιλογή, λειτουργεί σε λειτουργία MapReduce και για τοπική λειτουργία μπορείτε να χρησιμοποιήσετε την ακόλουθη ρύθμιση:

SET mapred.job.tracker=local;

Από την έκδοση 0.7 του Hive και μετά, υποστηρίζει μια λειτουργία που εκτελεί αυτόματα εργασίες MapReduce σε τοπική λειτουργία. Στο Hive 4.x, η προεπιλεγμένη μηχανή είναι το Apache Tez, επομένως αυτή η ιδιότητα ισχύει για την παλαιότερη διαδρομή MapReduce.

Τι είναι το Hive Server2 (HS2);

Το HiveServer2 (HS2) είναι μια διεπαφή διακομιστή που εκτελεί τις ακόλουθες λειτουργίες:

  • Επιτρέπει στους απομακρυσμένους πελάτες να εκτελούν ερωτήματα έναντι του Hive
  • Ανακτά τα αποτελέσματα αυτών των ερωτημάτων

Οι τρέχουσες εκδόσεις προσθέτουν προηγμένες λειτουργίες που βασίζονται στο Thrift RPC, όπως:

  • Συγχρονισμός πολλών πελατών
  • Πιστοποίηση

Το HS2 βρίσκεται πίσω από το Beeline και κάθε συνεδρία JDBC ή ODBC, γι' αυτό και αντικατέστησε το CLI Hive για έναν χρήστη. Τελεστές HiveQL και ενσωματωμένες συναρτήσεις Η αναφορά είναι το φυσικό επόμενο βήμα.

Συχνές Ερωτήσεις

Το Hive είναι ένα επίπεδο ερωτημάτων δέσμης που σαρώνει μεγάλους πίνακες μέσω κατανεμημένων εργασιών. Το HBase είναι ένα κατάστημα NoSQL που έχει σχεδιαστεί για τυχαίες αναγνώσεις και εγγραφές χιλιοστών του δευτερολέπτου σε μεμονωμένες γραμμές. Επιλύουν αντίθετα μοτίβα πρόσβασης και συχνά εκτελούνται παράλληλα.

Το Hive τρέχει σε MapReduce, Apache Tez ή Apache. SparkΤο MapReduce έχει καταργηθεί και το Hive 4.x έχει ως προεπιλογή το Tez, το οποίο διατηρεί τα ενδιάμεσα αποτελέσματα στη μνήμη αντί να τα εγγράφει στο δίσκο μεταξύ των σταδίων.

Ένας διαχειριζόμενος πίνακας δίνει στην Hive την κυριότητα των μεταδεδομένων και των αρχείων, επομένως αποθέστεping διαγράφει τα δεδομένα από τον κατάλογο αποθήκης. Ένας εξωτερικός πίνακας αποθηκεύει μόνο μεταδεδομένα και η απόθεσηping αφήνει τα υποκείμενα αρχεία ανέπαφα.

Τα μοντέλα κόστους που έχουν μαθευτεί τροφοδοτούν με στατιστικά στοιχεία εκτέλεσης τον σχεδιαστή για να προβλέψουν τον όγκο σάρωσης, την παραγγελία ενώσεων και το κλάδεμα διαμερισμάτων με μεγαλύτερη ακρίβεια από τις στατικές εκτιμήσεις. Οι πλατφόρμες cloud εμφανίζουν τα ίδια σήματα με τις προτάσεις συμπύκνωσης και διάταξης διαμερισμάτων.

Ο Copilot σχεδιάζει τις ενώσεις HiveQL, τις λειτουργίες παραθύρων και Java Σκελετοί UDF από ένα σχόλιο, το οποίο συντομεύει την τυπική εργασία. Τα ονόματα στηλών, τα κλειδιά διαμερισμάτων και οι τύποι δεδομένων χρειάζονται πρώτα έλεγχο σε σχέση με το πραγματικό μετα-αποθετήριο.

Ναι. Το Hive 0.14 πρόσθεσε τις λειτουργίες UPDATE και DELETE, και οι νεότερες εκδόσεις παρείχαν πλήρη υποστήριξη ACID για πίνακες συναλλαγών. Το Hive 4.x επεκτείνει αυτήν την επιλογή μέσω πινάκων Apache Iceberg με απομόνωση στιγμιότυπων και εξέλιξη σχήματος.

Και τα τρία εκθέτουν SQL στα ίδια αρχεία. Το Hive ευνοεί τις μεγάλες μαζικές εργασίες και κατέχει το metastore που διαβάζουν τα άλλα. Spark Η SQL ταιριάζει σε μικτές διοχετεύσεις. Το Trino στοχεύει σε διαδραστικά ερωτήματα σε διάφορες πηγές.

Ναι, κυρίως μέσω του Hive Metastore, το οποίο παραμένει το πρότυπο καταλόγου Spark, Trino, Presto και Flink όλα αναγνώστηκαν. Το ίδιο το Hive εξακολουθεί να εξυπηρετεί προγραμματισμένους μετασχηματισμούς παρτίδας και φορτώσεις αποθήκης.

Συνοψίστε αυτήν την ανάρτηση με: