Hive Tutorial - Hive Architecture και NASA Περίπτωση μελέτης



Αυτό το blog φροντιστηρίου Hive σάς παρέχει σε βάθος γνώση της Αρχιτεκτονικής Hive και του Hive Data Model. Εξηγεί επίσης τη μελέτη περίπτωσης της NASA στο Apache Hive.

Apache Hive Tutorial: Εισαγωγή

Το Hive είναι ένα αυστηρά χρησιμοποιούμενο εργαλείο σε ολόκληρη τη βιομηχανία για το Big Data Analytics και ένα εξαιρετικό εργαλείο για να ξεκινήσετε το δικό σας με. Σε αυτό το blog φροντιστηρίου Hive, θα συζητήσουμε για το Apache Hive σε βάθος. Το Apache Hive είναι ένα εργαλείο αποθήκευσης δεδομένων στο , η οποία παρέχει γλώσσα όπως SQL για ερωτήματα και ανάλυση Big Data. Το κίνητρο πίσω από την ανάπτυξη του Hive είναι η διαδρομή μάθησης χωρίς τριβές για προγραμματιστές & αναλυτές SQL. Η κυψέλη δεν είναι μόνο σωτήρας για άτομα από περιβάλλον μη προγραμματισμού, αλλά μειώνει επίσης τη δουλειά των προγραμματιστών που περνούν πολλές ώρες γράφοντας προγράμματα MapReduce. Σε αυτό το blog Apache Hive Tutorial, θα μιλήσω για:





Apache Hive Tutorial: Τι είναι η κυψέλη;

Το Apache Hive είναι ένα σύστημα αποθήκης δεδομένων που χτίστηκε πάνω από το Hadoop και χρησιμοποιείται για την ανάλυση δομημένων και ημι-δομημένων δεδομένων.Η κυψέλη αφαιρεί την πολυπλοκότητα του Hadoop MapReduce. Βασικά, παρέχει έναν μηχανισμό για την προβολή της δομής στα δεδομένα και την εκτέλεση ερωτημάτων γραμμένων σε HQL (Hive Query Language) που είναι παρόμοια με τις δηλώσεις SQL. Εσωτερικά, αυτά τα ερωτήματα ή HQL μετατρέπονται σε εργασίες μείωσης χαρτών από τον μεταγλωττιστή Hive. Επομένως, δεν χρειάζεται να ανησυχείτε για τη σύνταξη σύνθετων προγραμμάτων MapReduce για την επεξεργασία των δεδομένων σας χρησιμοποιώντας το Hadoop. Απευθύνεται σε χρήστες που είναι άνετοι με το SQL. Το Apache Hive υποστηρίζει τη γλώσσα ορισμού δεδομένων (DDL), τη γλώσσα χειρισμού δεδομένων (DML) και τις λειτουργίες καθορισμένες από τον χρήστη (UDF).

Εκμάθηση κυψέλης για αρχάριους | Κατανόηση της κυψέλης στο βάθος | Έντρεκα



SQL + Hadoop MapReduce = HiveQL

Apache Hive Tutorial: Story of Hive - από το Facebook στο Apache

Θήκη χρήσης Facebook - Hive Tutorial - EdurekaΣύκο : Hive Tutorial - Θήκη χρήσης Facebook

Προκλήσεις στο Facebook: Εκθετική ανάπτυξη δεδομένων

Πριν από το 2008, όλη η υποδομή επεξεργασίας δεδομένων στο Facebook κατασκευάστηκε γύρω από μια αποθήκη δεδομένων που βασίζεται σε εμπορικά RDBMS. Αυτές οι υποδομές ήταν ικανές να ικανοποιήσουν τις ανάγκες του Facebook εκείνη την εποχή. Όμως, καθώς τα δεδομένα άρχισαν να αναπτύσσονται πολύ γρήγορα, έγινε τεράστια πρόκληση για τη διαχείριση και την επεξεργασία αυτού του τεράστιου συνόλου δεδομένων. Σύμφωνα με ένα άρθρο στο Facebook, τα δεδομένα κλιμακώθηκαν από ένα σύνολο δεδομένων 15 TB το 2007 σε δεδομένα 2 PB το 2009. Επίσης, πολλά προϊόντα Facebook περιλαμβάνουν ανάλυση των δεδομένων όπως το Audience Insights, το Facebook Lexicon, το Facebook Ads κ.λπ. χρειάστηκε μια επεκτάσιμη και οικονομική λύση για να αντιμετωπίσει αυτό το ίδιο το πρόβλημα και, ως εκ τούτου, άρχισε να χρησιμοποιεί το πλαίσιο Hadoop.



Εκδημοκρατισμός Hadoop - MapReduce

Όμως, καθώς τα δεδομένα μεγάλωναν, η πολυπλοκότητα των κωδικών Map-Reduce αυξήθηκε αναλογικά. Έτσι, η κατάρτιση ατόμων με φόντο χωρίς προγραμματισμό για τη σύνταξη προγραμμάτων MapReduce έγινε δύσκολη. Επίσης, για την απλή ανάλυση πρέπει να γράψουμε εκατό γραμμές κώδικα MapReduce. Από τότε, το SQL χρησιμοποιήθηκε ευρέως από μηχανικούς και αναλυτές, συμπεριλαμβανομένου του Facebook, επομένως, η τοποθέτηση του SQL στην κορυφή του Hadoop φαινόταν λογικός τρόπος για να καταστήσει το Hadoop προσβάσιμο σε χρήστες με φόντο SQL.

Ως εκ τούτου, η ικανότητα της SQL να επαρκεί για τις περισσότερες από τις αναλυτικές απαιτήσεις και η επεκτασιμότητα του Hadoop γέννησε Κυψέλη Apache που επιτρέπει την εκτέλεση ερωτημάτων SQL όπως τα δεδομένα που υπάρχουν στο HDFS. Αργότερα, το έργο Hive προήλθε από τον Facebook τον Αύγουστο του 2008 και διατίθεται ελεύθερα ως Apache Hive σήμερα.

Τώρα, ας δούμε τα χαρακτηριστικά ή τα πλεονεκτήματα του Hive που το καθιστούν τόσο δημοφιλές.

Tutorial Apache Hive: Πλεονεκτήματα της κυψέλης

  • Χρήσιμο για άτομα που δεν προέρχονται από φόντο προγραμματισμού καθώς εξαλείφει την ανάγκη σύνταξης σύνθετου προγράμματος MapReduce.
  • Επεκτάσιμο και κλιμακούμενος να αντιμετωπίσει τον αυξανόμενο όγκο και ποικιλία δεδομένων, χωρίς να επηρεάζει την απόδοση του συστήματος.
  • Είναι ως ένα αποτελεσματικό εργαλείο ETL (Extract, Transform, Load).
  • Η κυψέλη υποστηρίζει οποιαδήποτε εφαρμογή πελάτη γραμμένη σε Java, PHP, Python, C ++ ή Ruby, εκθέτοντας την Thrift διακομιστής . (Μπορείτε να χρησιμοποιήσετε αυτές τις γλώσσες από την πλευρά του πελάτη ενσωματωμένες με SQL για πρόσβαση σε μια βάση δεδομένων, όπως DB2, κ.λπ.).
  • Καθώς οι πληροφορίες μεταδεδομένων του Hive αποθηκεύονται σε RDBMS, μειώνει σημαντικά το χρόνο εκτέλεσης σημασιολογικών ελέγχων κατά την εκτέλεση του ερωτήματος.

Apache Hive Tutorial: Πού να χρησιμοποιήσετε το Apache Hive;

Το Apache Hive εκμεταλλεύεται και τους δύο κόσμους, δηλαδή το SQL Database System και το δομή. Ως εκ τούτου, χρησιμοποιείται από ένα μεγάλο πλήθος εταιρειών. Χρησιμοποιείται ως επί το πλείστον για αποθήκευση δεδομένων όπου μπορείτε να εκτελέσετε αναλύσεις και εξόρυξη δεδομένων που δεν απαιτούν επεξεργασία σε πραγματικό χρόνο. Μερικά από τα πεδία όπου μπορείτε να χρησιμοποιήσετε το Apache Hive είναι τα εξής:

  • Αποθήκευση δεδομένων
  • Ad-hoc ανάλυση

Όπως ειπώθηκε, δεν μπορείτε να χειροκροτήσετε μόνο με το ένα χέρι, δηλαδή δεν μπορείτε να λύσετε κάθε πρόβλημα με ένα μόνο εργαλείο. Επομένως, μπορείτε να συνδέσετε το Hive με άλλα εργαλεία για να το χρησιμοποιήσετε σε πολλούς άλλους τομείς. Για παράδειγμα, το Tableau μαζί με το Apache Hive μπορούν να χρησιμοποιηθούν για Οπτικοποίηση δεδομένων, η ενσωμάτωση του Apache Tez με το Hive θα σας προσφέρει δυνατότητες επεξεργασίας σε πραγματικό χρόνο κ.λπ.
Προχωρώντας σε αυτό το ιστολόγιο Apache Hive Tutorial, ας ρίξουμε μια ματιά σε μια μελέτη περίπτωσης της NASA όπου θα μάθετε πώς η Hive έλυσε το πρόβλημα που αντιμετώπιζαν οι επιστήμονες της NASA κατά την αξιολόγηση των Κλιματικών Μοντέλων.

Hive Tutorial: Μελέτη περίπτωσης της NASA

Ένα κλιματικό μοντέλο είναι μια μαθηματική αναπαράσταση των κλιματικών συστημάτων που βασίζεται σε διάφορους παράγοντες που επηρεάζουν το κλίμα της Γης. Βασικά, περιγράφει την αλληλεπίδραση διαφόρων οδηγών του κλίματος, όπως ωκεανός, ήλιος, ατμόσφαιρα κ.λπ. προςπαρέχει μια εικόνα για τη δυναμική του κλιματικού συστήματος. Χρησιμοποιείται για την προβολή κλιματικών συνθηκών προσομοιώνοντας τις κλιματικές αλλαγές με βάση παράγοντες που επηρεάζουν το κλίμα. Το Jet Propulsion Laboratory της NASA ανέπτυξε Περιφερειακό Σύστημα Αξιολόγησης Κλιματικού Μοντέλου (RCMES) για ανάλυση και αξιολόγηση του μοντέλου κλιματικής παραγωγής με δεδομένα τηλεπισκόπησης που υπάρχουν σε διάφορα εξωτερικά αποθετήρια.

Το RCMES (Περιφερειακό Σύστημα Αξιολόγησης Μοντέλου Κλίματος) έχει δύο συνιστώσες:

  • RCMED (Βάση δεδομένων αξιολόγησης μοντέλου περιφερειακού κλίματος):

Πρόκειται για μια βάση δεδομένων cloud με δυνατότητα κλιμάκωσης που φορτώνει τα δεδομένα τηλεπισκόπησης και τα δεδομένα της ανάλυσης που σχετίζονται με το κλίμα χρησιμοποιώντας εξολκέες όπως εξολκέες Apache OODT, Apache Tika κ.λπ. Τέλος, μετατρέπει τα δεδομένα ως μοντέλο σημείου δεδομένων που έχει τη μορφή (γεωγραφικό πλάτος , γεωγραφικό μήκος, χρόνος, τιμή, ύψος) και το αποθηκεύει στη βάση δεδομένων My SQL. Ο πελάτης μπορεί να ανακτήσει τα δεδομένα που υπάρχουν στο RCMED εκτελώντας ερωτήματα Space / Time. Η περιγραφή τέτοιων ερωτημάτων δεν είναι σχετική για εμάς τώρα.

  • RCMET (Περιφερειακή εργαλειοθήκη αξιολόγησης μοντέλου κλίματος):

Παρέχει στον χρήστη τη δυνατότητα να συγκρίνει τα δεδομένα αναφοράς που υπάρχουν στο RCMED με τα δεδομένα εξόδου του κλιματικού μοντέλου που έχουν ληφθεί από ορισμένες άλλες πηγές για να πραγματοποιήσουν διαφορετικά είδη ανάλυσης και αξιολόγησης. Μπορείτε να ανατρέξετε στην παρακάτω εικόνα για να κατανοήσετε την αρχιτεκτονική του RCMES.

Τα δεδομένα αναφοράς στο RCMED προέρχονται από τηλεπισκόπηση μέσω δορυφόρου, σύμφωνα με τις διαφορετικές παραμέτρους που απαιτούνται για την αξιολόγηση του κλιματικού μοντέλου. Για παράδειγμα - το AIRS (Atmospheric Infrared Sounder) παρέχει παραμέτρους όπως η θερμοκρασία του επιφανειακού αέρα, η θερμοκρασία και το Geopotential, το TRMM (Tropical Rainfall Measurement Mission) παρέχει μηνιαία βροχόπτωση κ.λπ.

Προβλήματα που αντιμετωπίζει η NASA κατά τη χρήση του συστήματος βάσεων δεδομένων MySQL:

  • Μετά τη φόρτωση της βάσης δεδομένων MySQL με 6 δισεκατομμύρια πλειάδες της φόρμας (γεωγραφικό πλάτος, μήκος, χρόνος, τιμή σημείου δεδομένων, ύψος), το σύστημα κατέρρευσε όπως φαίνεται στην παραπάνω εικόνα.
  • Ακόμα και μετά τη διαίρεση ολόκληρου του πίνακα σε μικρότερα υποσύνολα, το σύστημα παρήγαγε τεράστια γενικά έξοδα κατά την επεξεργασία των δεδομένων.

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

Πώς το Apache Hive μπορεί να λύσει το πρόβλημα;

Τώρα, ας δούμε, ποια είναι αυτά τα χαρακτηριστικά που έπεισαν την ομάδα JPL της NASA να συμπεριλάβει το Apache Hive ως αναπόσπαστο μέρος στη στρατηγική λύσεών τους:

  • Δεδομένου ότι το Apache Hive τρέχει πάνω από το Hadoop, είναι επεκτάσιμο και μπορεί να επεξεργαστεί δεδομένα με κατανεμημένο και παράλληλο τρόπο.
  • Παρέχει Hive Query Language που είναι παρόμοια με τη SQL και ως εκ τούτου είναι εύκολο να μάθει.

Ανάπτυξη κυψέλης:

Η παρακάτω εικόνα εξηγεί το RCMES Architect με την ενσωμάτωση Apache Hive:

Σύκο : Hive Tutorial - Αρχιτεκτονική RCMES με Apache Hive

Η παραπάνω εικόνα δείχνει την ανάπτυξη της κυψέλης apache στο RCMES. Τα ακόλουθα βήματα έγιναν από την ομάδα της NASA κατά την ανάπτυξη του Apache Hive:

  • Εγκατέστησαν το Hive χρησιμοποιώντας το Cloudera και το Apache Hadoop όπως φαίνεται στην παραπάνω εικόνα.
  • Χρησιμοποίησαν το Apache Sqoop για να απορροφήσουν δεδομένα στην κυψέλη από τη βάση δεδομένων MySQL.
  • Το Apache OODT wrapper υλοποιήθηκε για την εκτέλεση ερωτημάτων στο Hive και την ανάκτηση των δεδομένων στο RCMET.

Αρχικές παρατηρήσεις συγκριτικής αξιολόγησης με κυψέλη:

  • Αρχικά φόρτωσαν 2,5 δισεκατομμύρια σημεία δεδομένων σε έναν πίνακα και πραγματοποίησαν ένα ερώτημα καταμέτρησης. Για παράδειγμα, Κυψέλη> επιλέξτε count (datapoint_id) από το DataPoint. Χρειάστηκαν 5-6 λεπτά για να μετρηθούν όλοι οι δίσκοι (15-17 λεπτά για τα 6,8 δισεκατομμύρια εγγραφές).
  • Η φάση μείωσης ήταν γρήγορη, αλλά η φάση του χάρτη πήρε το 95% του συνολικού χρόνου επεξεργασίας. Χρησιμοποιούσαν έξι ( 4x τετραπύρηνος ) συστήματα με 24 GB RAM (περίπου) σε καθένα από τα συστήματα.
  • Ακόμη και μετά την προσθήκη περισσότερων μηχανών, την αλλαγή του μεγέθους μπλοκ HDFS (64 MB, 128 MB, 256 MB) και την αλλαγή πολλών άλλων μεταβλητών διαμόρφωσης (io.είδος.παράγοντας, i.είδος.mb), δεν είχαν μεγάλη επιτυχία στη μείωση του χρόνου ολοκλήρωσης του αριθμού.

Είσοδοι από μέλη της κοινότητας κυψελών:

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

  • Ανέφεραν ότι η ταχύτητα ανάγνωσης HDFS είναι περίπου 60 MB / s σε σύγκριση με 1 GB / s σε περίπτωση τοπικού δίσκου, ανάλογα με την χωρητικότητα του δικτύου και τον φόρτο εργασίας στο NameNode.
  • Τα μέλη το πρότειναν 16 χαρτογράφοι θα απαιτηθεί στο τρέχον σύστημά τους για να ταιριάζει με την απόδοση I / O μιας τοπικής εργασίας εκτός Hadoop.
  • Πρότειναν επίσης να μειωθεί το χωρισμένο μέγεθος για κάθε χαρτογράφο να αυξήσει τον αριθμότουχαρτογράφοι και επομένως, παρέχοντας περισσότερο παραλληλισμό.
  • Τέλος, τα μέλη της κοινότητας τους είπαν να αριθμός χρήσεων (1) αντί να αναφέρεται μετρώ ( datapoint_id) . Αυτό συμβαίνει επειδή στην περίπτωση της μέτρησης (1), δεν υπάρχει στήλη αναφοράς και επομένως δεν λαμβάνει χώρα αποσυμπίεση και αποεστερίωση κατά την εκτέλεση της μέτρησης.

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

Apache Hive Tutorial: Αρχιτεκτονική κυψελών και τα συστατικά της

Η ακόλουθη εικόνα περιγράφει την Αρχιτεκτονική Κυψέλης και τη ροή στην οποία υποβάλλεται ένα ερώτημαΚυψέληκαι τελικά επεξεργάστηκε χρησιμοποιώντας το πλαίσιο MapReduce:

Σύκο : Hive Tutorial - Hive Architecture

Όπως φαίνεται στην παραπάνω εικόνα, η Αρχιτεκτονική Κυψέλης μπορεί να κατηγοριοποιηθεί στα ακόλουθα στοιχεία:

  • Πελάτες κυψέλης: Hive υποστηρίζει εφαρμογή γραμμένη σε πολλές γλώσσες όπως Java, C ++, Python κ.λπ. χρησιμοποιώντας προγράμματα οδήγησης JDBC, Thrift και ODBC. Ως εκ τούτου, μπορεί κανείς πάντα να γράφει κυψέλη εφαρμογή πελάτη γραμμένο σε γλώσσα της επιλογής τους.
  • Υπηρεσίες κυψέλης: Το Apache Hive παρέχει διάφορες υπηρεσίες όπως CLI, Web Interface κ.λπ. για την εκτέλεση ερωτημάτων. Θα εξερευνήσουμε καθένα από αυτά σύντομα σε αυτό το ιστολόγιο εκπαιδευτικών κυψελών.
  • Πλαίσιο επεξεργασίας και διαχείριση πόρων: Εσωτερικώς,Η Hive χρησιμοποιεί το πλαίσιο Hadoop MapReduce ως de facto μηχανή για την εκτέλεση των ερωτημάτων. είναι ένα ξεχωριστό θέμα από μόνο του και επομένως δεν συζητείται εδώ.
  • Κατανεμημένη αποθήκευση: Καθώς το Hive είναι εγκατεστημένο πάνω από το Hadoop, χρησιμοποιεί το υποκείμενο HDFS για τον κατανεμημένο χώρο αποθήκευσης. Μπορείτε να ανατρέξετε στο Ιστολόγιο HDFS για να μάθετε περισσότερα για αυτό.

Τώρα, ας εξερευνήσουμε τα δύο πρώτα βασικά στοιχεία της Αρχιτεκτονικής Κυψέλης:

1. Πελάτες κυψέλης:

Το Apache Hive υποστηρίζει διαφορετικούς τύπους εφαρμογών πελατών για την εκτέλεση ερωτημάτων στο Hive. Αυτοί οι πελάτες μπορούν να κατηγοριοποιηθούν σε τρεις τύπους:

  • Πελάτες Thrift: Καθώς ο διακομιστής Hive βασίζεται στο Apache Thrift, μπορεί να εξυπηρετήσει το αίτημα από όλες αυτές τις γλώσσες προγραμματισμού που υποστηρίζουν το Thrift.
  • Πελάτες JDBC: Η κυψέλη επιτρέπει στις εφαρμογές Java να συνδεθούν σε αυτήν χρησιμοποιώντας το πρόγραμμα οδήγησης JDBC το οποίο ορίζεται στην κατηγορία org.απάχης.Χάοουπ.hive.jdbc.HiveDriver.
  • Πελάτες ODBC: Το πρόγραμμα οδήγησης Hive ODBC επιτρέπει σε εφαρμογές που υποστηρίζουν το πρωτόκολλο ODBC να συνδεθούν στο Hive. (Όπως το πρόγραμμα οδήγησης JDBC, το πρόγραμμα οδήγησης ODBC χρησιμοποιεί το Thrift για επικοινωνία με τον διακομιστή Hive.)

2. Υπηρεσίες κυψελών:

Η κυψέλη παρέχει πολλές υπηρεσίες όπως φαίνεται στην παραπάνω εικόνα. Ας ρίξουμε μια ματιά σε καθένα από αυτά:

Συγχρονισμός νήματος σε παράδειγμα java
  • Hive CLI (Διεπαφή γραμμής εντολών): Αυτό είναι το προεπιλεγμένο κέλυφος που παρέχεται από την Κυψέλη όπου μπορείτε να εκτελέσετε απευθείας τα ερωτήματα και τις εντολές σας.
  • Διασυνδέσεις Ιστού Apache Hive: Εκτός από τη διεπαφή της γραμμής εντολών, η Hive παρέχει επίσης ένα διαδικτυακό GUI για την εκτέλεση ερωτημάτων και εντολών Hive.
  • Διακομιστής κυψέλης: Ο διακομιστής Hive είναι βασισμένος στο Apache Thrift και ως εκ τούτου, αναφέρεται επίσης ως Thrift Server που επιτρέπει σε διαφορετικούς πελάτες να υποβάλλουν αιτήματα στην Hive και να ανακτά το τελικό αποτέλεσμα.
  • Πρόγραμμα οδήγησης Apache Hive: Είναι υπεύθυνη για τη λήψη των ερωτημάτων που υποβάλλονται μέσω των διεπαφών CLI, UI ιστού, Thrift, ODBC ή JDBC από έναν πελάτη. Στη συνέχεια, το πρόγραμμα οδήγησης μεταβιβάζει το ερώτημα στον μεταγλωττιστή όπου γίνεται ανάλυση, έλεγχος τύπου και σημασιολογική ανάλυση με τη βοήθεια σχήματος που υπάρχει στο μεταστατικό. Στο επόμενο βήμα, δημιουργείται ένα βελτιστοποιημένο λογικό σχέδιο με τη μορφή DAG (Directed Acyclic Graph) εργασιών μείωσης χάρτη και εργασιών HDFS. Τέλος, η μηχανή εκτέλεσης εκτελεί αυτές τις εργασίες με τη σειρά των εξαρτήσεων τους, χρησιμοποιώντας το Hadoop.
  • Metastore: Μπορείτε να σκεφτείτε metastoreως κεντρικό αποθετήριο για την αποθήκευση όλων των πληροφοριών μεταδεδομένων της κυψέλης. Τα μεταδεδομένα της ομάδας περιλαμβάνουν διάφορους τύπους πληροφοριών, όπως δομή πινάκων και διαχωριστικάμαζί με τη στήλη, τον τύπο στήλης, το σειριοποιητή και το deserializer που απαιτούνται για τη λειτουργία ανάγνωσης / εγγραφής στα δεδομένα που υπάρχουν στο HDFS. Το μεταστατικόαποτελείται από δύο θεμελιώδεις ενότητες:
    • Μια υπηρεσία που παρέχει metastoreπρόσβαση στο otheρΥπηρεσίες κυψέλης.
    • Αποθήκευση δίσκου για τα μεταδεδομένα που είναι ξεχωριστά από το χώρο αποθήκευσης HDFS.

Τώρα, ας καταλάβουμε τους διαφορετικούς τρόπους εφαρμογής του Hive metastoreστην επόμενη ενότητα αυτού του εκπαιδευτικού κυψέλης.

Apache Hive Tutorial: Διαμόρφωση Metastore

Το Metastore αποθηκεύει τις πληροφορίες μεταδεδομένων χρησιμοποιώντας RDBMS και ένα στρώμα ORM ανοιχτού κώδικα (Object Relational Model) που ονομάζεται Data Nucleus, το οποίο μετατρέπει την αναπαράσταση αντικειμένων σε σχεσιακό σχήμα και αντίστροφα. Ο λόγος για την επιλογή RDBMS αντί του HDFS είναι η επίτευξη χαμηλού λανθάνοντος χρόνου. Μπορούμε να εφαρμόσουμε το metastore ακολουθώντας τρεις διαμορφώσεις:

1. Ενσωματωμένο Metastore:

Τόσο η υπηρεσία metastore όσο και η υπηρεσία Hive εκτελούνται στο ίδιο JVM από προεπιλογή χρησιμοποιώντας μια ενσωματωμένη παρουσία βάσης δεδομένων Derby όπου τα μεταδεδομένα είναι αποθηκευμένα στον τοπικό δίσκο. Αυτό ονομάζεται ενσωματωμένη διαμόρφωση metastore. Σε αυτήν την περίπτωση, μόνο ένας χρήστης μπορεί να συνδεθεί στη βάση δεδομένων metastore κάθε φορά. Εάν ξεκινήσετε μια δεύτερη παρουσία προγράμματος οδήγησης Hive, θα εμφανιστεί ένα σφάλμα. Αυτό είναι καλό για δοκιμές μονάδας, αλλά όχι για πρακτικές λύσεις.

2. Τοπικό Metastore:

Αυτή η διαμόρφωση μας επιτρέπει να έχουμε πολλές συνεδρίες Hive, δηλαδή πολλοί χρήστες μπορούν να χρησιμοποιούν ταυτόχρονα τη βάση δεδομένων metastore. Αυτό επιτυγχάνεται χρησιμοποιώντας οποιαδήποτε βάση δεδομένων συμβατή με JDBC όπως η MySQL που εκτελείται σε ξεχωριστό JVM ή διαφορετικό μηχάνημα από αυτό της υπηρεσίας Hive και της υπηρεσίας metastore που εκτελείται στο ίδιο JVM όπως φαίνεται παραπάνω. Σε γενικές γραμμές, η πιο δημοφιλής επιλογή είναι η εφαρμογή ενός διακομιστή MySQL ως βάσης δεδομένων metastore.

3. Απομακρυσμένο Metastore:

Στην απομακρυσμένη διαμόρφωση metastore, η υπηρεσία metastore εκτελείται με τη δική της ξεχωριστή JVM και όχι στην υπηρεσία Hive JVM. Άλλες διεργασίες επικοινωνούν με τον διακομιστή metastore χρησιμοποιώντας Thrift Network APIs. Σε αυτήν την περίπτωση, μπορείτε να έχετε έναν ή περισσότερους διακομιστές metastore για μεγαλύτερη διαθεσιμότητα.Το κύριο πλεονέκτημα της χρήσης απομακρυσμένου metastore είναι ότι δεν χρειάζεται να κοινοποιείτε τα διαπιστευτήρια σύνδεσης JDBC με κάθε χρήστη Hive για πρόσβαση στη βάση δεδομένων του metastore.

Apache Hive Tutorial: Μοντέλο δεδομένων

Τα δεδομένα στην κυψέλη μπορούν να κατηγοριοποιηθούν σε τρεις τύπους σε επίπεδο κόκκων:

  • Τραπέζι
  • Χώρισμα
  • Κάδος

Πίνακες:

Οι πίνακες στην ομάδα είναι ίδιοι με τους πίνακες που υπάρχουν σε μια σχεσιακή βάση δεδομένων. Μπορείτε να εκτελέσετε λειτουργίες φίλτρου, έργου, συμμετοχής και ένωσης σε αυτά. Υπάρχουν δύο τύποι πινάκων στην Κυψέλη:

1. Διαχειριζόμενος πίνακας:

Εντολή:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ (στήλη1 τύπος_ δεδομένων, στήλη2 τύπος_ δεδομένων)

LOAD DATA INPATH INTO πίνακας διαχειριζόμενος_ πίνακας

Όπως υποδηλώνει το όνομα (διαχειριζόμενος πίνακας), η Hive είναι υπεύθυνη για τη διαχείριση των δεδομένων ενός διαχειριζόμενου πίνακα. Με άλλα λόγια, αυτό που εννοούσα λέγοντας «Hive διαχειρίζεται τα δεδομένα», είναι ότι εάν φορτώσετε τα δεδομένα από ένα αρχείο που υπάρχει στο HDFS σε μια κυψέλη Διαχειριζόμενος πίνακας και εκδώστε μια εντολή DROP, ο πίνακας μαζί με τα μεταδεδομένα του θα διαγραφούν. Έτσι, τα δεδομένα που ανήκουν στην πτώση διαχειριζόμενος_ πίνακας δεν υπάρχει πλέον οπουδήποτε στο HDFS και δεν μπορείτε να το ανακτήσετε με κανένα τρόπο. Βασικά, μετακινείτε τα δεδομένα όταν εκδίδετε την εντολή LOAD από τη θέση του αρχείου HDFS στον κατάλογο αποθήκης Hive.

Σημείωση: Η προεπιλεγμένη διαδρομή του καταλόγου αποθήκης έχει οριστεί σε / user / hive / warehouse. Τα δεδομένα ενός πίνακα Hive βρίσκονται στον κατάλογο_ αποθήκης / table_name (HDFS). Μπορείτε επίσης να καθορίσετε τη διαδρομή του καταλόγου αποθήκης στην παράμετρο διαμόρφωσης hive.metastore.warehouse.dir που υπάρχει στο hive-site.xml.

2. Εξωτερικός πίνακας:

Εντολή:

ΔΗΜΙΟΥΡΓΙΑ ΕΞΩΤΕΡΙΚΟΥ ΠΙΝΑΚΑ (τύπος στήλης1 δεδομένων, τύπος στήλης2 δεδομένα) ΤΟΠΟΘΕΣΙΑ ''

ΦΟΡΤΩΣΗ ΔΕΔΟΜΕΝΩΝ »ΣΤΟ ΠΙΝΑΚΑ

Για εξωτερικός πίνακας , Hive δεν είναι υπεύθυνη για τη διαχείριση των δεδομένων. Σε αυτήν την περίπτωση, όταν εκδίδετε την εντολή LOAD, το Hive μετακινεί τα δεδομένα στον κατάλογο αποθήκης. Στη συνέχεια, η ομάδα δημιουργεί τις πληροφορίες μεταδεδομένων για τον εξωτερικό πίνακα. Τώρα, εάν εκδώσετε μια εντολή DROP στο εξωτερικός πίνακας , θα διαγραφούν μόνο οι πληροφορίες μεταδεδομένων σχετικά με τον εξωτερικό πίνακα. Επομένως, μπορείτε ακόμα να ανακτήσετε τα δεδομένα αυτού του πολύ εξωτερικού πίνακα από τον κατάλογο αποθήκης χρησιμοποιώντας εντολές HDFS.

Χωρίσματα:

Εντολή:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ όνομα_τραπεζιού (στήλη1 τύπος_ δεδομένων, στήλη2 τύπος_ δεδομένων) ΚΑΤΑΝΟΜΗ ΑΠΟ (τύπος_ δεδομένων_διαμερισμάτων1, τύπος_διαμερισμάτων2, & hellip.)

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

Σημείωση: Θυμηθείτε, το πιο συνηθισμένο λάθος που έγινε κατά τη δημιουργία διαμερισμάτων είναι να καθορίσετε ένα υπάρχον όνομα στήλης ως στήλη διαμερισμάτων. Με αυτόν τον τρόπο, θα λάβετε ένα σφάλμα - 'Σφάλμα σε σημασιολογική ανάλυση: Η στήλη επαναλαμβάνεται σε στήλες διαμέρισης'.

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

Ας υποθέσουμε ότι έχουμε δεδομένα για τρία τμήματα στον πίνακα μαθητών_στοιχείων - CSE, ECE και Civil. Επομένως, θα έχουμε συνολικά τρία διαμερίσματα για καθένα από τα τμήματα, όπως φαίνεται στην παρακάτω εικόνα. Και, για κάθε τμήμα θα έχουμε όλα τα δεδομένα σχετικά με αυτό το τμήμα που βρίσκονται σε ξεχωριστό υποκατάλογο κάτω από τον κατάλογο πίνακα Hive. Για παράδειγμα, όλα τα μαθητικά δεδομένα σχετικά με τα τμήματα ΧΑΚ θα αποθηκευτούν στο χρήστη / hive / warehouse / student_details / dept. = CSE. Έτσι, τα ερωτήματα σχετικά με τους μαθητές του ΧΑΚ θα πρέπει να κοιτάξουν μόνο τα δεδομένα που υπάρχουν στο διαμέρισμα του ΧΑΚ. Αυτό καθιστά τη διαμέριση πολύ χρήσιμη καθώς μειώνει τον λανθάνοντα χρόνο του ερωτήματος με σάρωση μόνο σχετικό διαχωρισμένα δεδομένα αντί για ολόκληρο το σύνολο δεδομένων. Στην πραγματικότητα, σε πραγματικές εφαρμογές, θα αντιμετωπίζετε εκατοντάδες TB δεδομένων. Έτσι, φανταστείτε τη σάρωση αυτού του τεράστιου όγκου δεδομένων για κάποιο ερώτημα πού 95% τα δεδομένα που σαρώθηκαν από εσάς δεν σχετίζονται με το ερώτημά σας.

Θα σας πρότεινα να διαβάσετε το blog Εντολές κυψέλης όπου θα βρείτε διαφορετικούς τρόπους εφαρμογής κατατμήσεων με ένα παράδειγμα.

Κουβάδες:

Εντολές:

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ table_name PARTITIONED BY (partition1 data_type, partition2 data_type, & hellip.) CLUSTERED BY (στήλη_name1, column_name2,…) SORTED BY (column_name [ASC | DESC],…)] INTO num_buckets BUCKETS

Τώρα, μπορείτε να διαιρέσετε κάθε διαμέρισμα ή τον μη διαχωρισμένο πίνακα σε κάδους με βάση τη συνάρτηση κατακερματισμού μιας στήλης στον πίνακα. Στην πραγματικότητα, κάθε κάδος είναι απλώς ένα αρχείο στον κατάλογο διαμερισμάτων ή στον κατάλογο πίνακα (πίνακας χωρίς διαχωρισμό). Επομένως, εάν έχετε επιλέξει να χωρίσετε τα διαμερίσματα σε n κάδους, θα έχετε n αρχεία σε κάθε έναν από τους καταλόγους διαμερισμάτων σας. Για παράδειγμα, μπορείτε να δείτε την παραπάνω εικόνα όπου κάναμε κάθε διαμέρισμα σε 2 κουβάδες. Έτσι, κάθε διαμέρισμα, ας πούμε CSE, θα έχει δύο αρχεία όπου καθένα από αυτά θα αποθηκεύει τα δεδομένα του μαθητή του ΧΑΚ.

Πώς διανέμει η Hive τις σειρές σε κουβάδες;

Λοιπόν, το Hive καθορίζει τον αριθμό κάδου για μια σειρά χρησιμοποιώντας τον τύπο: hash_function (bucketing_column) modulo (num_of_buckets) . Εδώ, hash_function εξαρτάται από τον τύπο δεδομένων της στήλης. Για παράδειγμα, εάν κάνατε τον πίνακα βάσει κάποιας στήλης, ας πούμε user_id, του τύπου δεδομένων INT, η συνάρτηση hash_ θα είναι - hash_function (user_id) ) = ακέραια τιμή του user_id . Και, ας υποθέσουμε ότι έχετε δημιουργήσει δύο κουβάδες, τότε η Κυψέλη θα καθορίσει τις σειρές που πηγαίνουν στον κάδο 1 σε κάθε διαμέρισμα, υπολογίζοντας: (τιμή user_id) modulo (2). Επομένως, σε αυτήν την περίπτωση, οι σειρές με το user_id που τελειώνουν με ένα ακέραιο ψηφίο θα βρίσκονται σε έναν ίδιο κάδο που αντιστοιχεί σε κάθε διαμέρισμα. Η συνάρτηση hash_ για άλλους τύπους δεδομένων είναι λίγο περίπλοκη για τον υπολογισμό και στην πραγματικότητα, για μια συμβολοσειρά δεν είναι καν ανθρώπινη αναγνώριση.

Σημείωση: Εάν χρησιμοποιείτε Apache Hive 0.x ή 1.x, πρέπει να εκδώσετε την εντολή - set hive.enforce.bucketing = true από το τερματικό της κυψέλης σας πριν εκτελέσετε το bucketing. Αυτό θα σας επιτρέψει να έχετε τον σωστό αριθμό μειωτή κατά τη χρήση του συμπλέγματος με ρήτρα για την αποθήκευση μιας στήλης. Σε περίπτωση που δεν το έχετε κάνει, ενδέχεται να διαπιστώσετε ότι ο αριθμός των αρχείων που έχουν δημιουργηθεί στον κατάλογο πίνακα δεν είναι ίσος με τον αριθμό των κάδων. Εναλλακτικά, μπορείτε επίσης να ορίσετε τον αριθμό του μειωτήρα ίσο με τον αριθμό των κάδων χρησιμοποιώντας το set mapred.reduce.task = num_bucket.

Γιατί χρειαζόμαστε κουβάδες;

Υπάρχουν δύο κύριοι λόγοι για την εκτέλεση κάδων σε ένα διαμέρισμα:

  • ΠΡΟΣ ΤΟ ένωση πλευρά χάρτη απαιτεί τα δεδομένα που ανήκουν σε ένα μοναδικό κλειδί σύνδεσης να υπάρχουν στο ίδιο διαμέρισμα. Τι γίνεται όμως με τις περιπτώσεις στις οποίες το κλειδί διαμέρισής σας διαφέρει από τη συμμετοχή; Επομένως, σε αυτές τις περιπτώσεις, μπορείτε να εκτελέσετε έναν σύνδεσμο από την πλευρά του χάρτη κάνοντας τον πίνακα χρησιμοποιώντας το πλήκτρο σύνδεσης.
  • Το Bucket κάνει τη διαδικασία δειγματοληψίας πιο αποτελεσματική και, ως εκ τούτου, μας επιτρέπει να μειώσουμε το χρόνο ερωτήματος.

Θα ήθελα να ολοκληρώσω αυτό το blog φροντιστηρίου Hive εδώ. Είμαι πολύ σίγουρος αφού περάσω από αυτό το blog φροντιστηρίου Hive, θα συνειδητοποιούσατε την απλότητα του Apache Hive. Από τότε, έχετε μάθει όλες τις βασικές αρχές της κυψέλης, ήρθε η ώρα να αποκτήσετε εμπειρία με το Apache Hive. Λοιπόν, ρίξτε μια ματιά στο επόμενο ιστολόγιο σε αυτήν τη σειρά ιστολογίων Hive Tutorial που βρίσκεται στην εγκατάσταση Hive και ξεκινήστε να εργάζεστε στο Apache Hive.

Τώρα που έχετε κατανοήσει το Apache Hive και τα χαρακτηριστικά του, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το πρόγραμμα εκπαίδευσης Edureka Big Data Hadoop Certification βοηθά τους μαθητές να γίνουν ειδικοί σε HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume και Sqoop χρησιμοποιώντας περιπτώσεις χρήσης σε πραγματικό χρόνο σε τομείς λιανικής, κοινωνικής δικτύωσης, αεροπορίας, τουρισμού, χρηματοοικονομικών.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.