Αρχιτεκτονική HBase: Μοντέλο δεδομένων HBase & Μηχανισμός ανάγνωσης / εγγραφής HBase



Αυτό το ιστολόγιο για την αρχιτεκτονική HBase εξηγεί το μοντέλο δεδομένων HBase και δίνει πληροφορίες για την αρχιτεκτονική HBase. Εξηγεί επίσης διαφορετικούς μηχανισμούς στο HBase.

Αρχιτεκτονική HBase

Στο προηγούμενο blog μου στις Εκπαιδευτικό HBase , Εξήγησα τι είναι το HBase και τα χαρακτηριστικά του. Ανέφερα επίσης τη μελέτη περίπτωσης του Facebook messenger για να σας βοηθήσω να συνδεθείτε καλύτερα. Τώρα προχωράμε περαιτέρω στο δικό μας , Θα σας εξηγήσω το μοντέλο δεδομένων των HBase και HBase Architecture.Πριν προχωρήσετε, θα πρέπει επίσης να γνωρίζετε ότι το HBase είναι μια σημαντική ιδέα που αποτελεί αναπόσπαστο τμήμα του για πιστοποίηση Big Data Hadoop.

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





Ας καταλάβουμε πρώτα το μοντέλο δεδομένων του HBase. Βοηθά το HBase σε ταχύτερη ανάγνωση / εγγραφή και αναζητήσεις.



Αρχιτεκτονική HBase: Μοντέλο δεδομένων HBase

Όπως γνωρίζουμε, το HBase είναι μια βάση δεδομένων NoSQL προσανατολισμένη στη στήλη. Παρόλο που μοιάζει με μια σχεσιακή βάση δεδομένων που περιέχει σειρές και στήλες, αλλά δεν είναι σχεσιακή βάση δεδομένων. Οι σχεσιακές βάσεις δεδομένων είναι προσανατολισμένες στη σειρά, ενώ το HBase είναι προσανατολισμένο στη στήλη. Λοιπόν, ας κατανοήσουμε πρώτα τη διαφορά μεταξύ των βάσεων δεδομένων με προσανατολισμό στη στήλη και στη σειρά:

Βάσεις δεδομένων με προσανατολισμό στη σειρά και στήλη:

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

Για να το κατανοήσουμε καλύτερα, ας πάρουμε ένα παράδειγμα και να εξετάσουμε τον παρακάτω πίνακα.



Πίνακας - Αρχιτεκτονική HBase - Edureka

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

ένας,Πολ Γουόκερ,ΜΑΣ,231,Γενναίος,

2, Βιν Ντίζελ,Βραζιλία,520,Αγριος ίππος της Αμερικής

pass by value vs pass by referensi java

Σε βάσεις δεδομένων προσανατολισμένες στη σειρά τα δεδομένα αποθηκεύονται με βάση σειρές ή πλειάδες όπως μπορείτε να δείτε παραπάνω.

Ενώ οι βάσεις δεδομένων προσανατολισμένες στη στήλη αποθηκεύουν αυτά τα δεδομένα ως:

ένας,2, Πολ Γουόκερ,Βιν Ντίζελ, ΜΑΣ,Βραζιλία, 231,520, Γενναίος,Αγριος ίππος της Αμερικής

Σε βάσεις δεδομένων προσανατολισμένες στη στήλη, όλες οι τιμές στηλών αποθηκεύονται μαζί όπως οι τιμές της πρώτης στήλης θα αποθηκευτούν μαζί, τότε οι τιμές της δεύτερης στήλης θα αποθηκευτούν μαζί και τα δεδομένα σε άλλες στήλες αποθηκεύονται με παρόμοιο τρόπο.

  • Όταν ο όγκος των δεδομένων είναι πολύ τεράστιος, όπως όσον αφορά τα petabytes ή exabytes, χρησιμοποιούμε μια προσέγγιση προσανατολισμένη στη στήλη, επειδή τα δεδομένα μιας μεμονωμένης στήλης αποθηκεύονται μαζί και μπορούν να προσπελαστούν γρηγορότερα.
  • Ενώ η προσέγγιση με προσανατολισμό στη σειρά χειρίζεται συγκριτικά τον μικρότερο αριθμό σειρών και στηλών, καθώς η βάση δεδομένων προσανατολισμένη στη σειρά αποθηκεύει δεδομένα είναι μια δομημένη μορφή.
  • Όταν πρέπει να επεξεργαστούμε και να αναλύσουμε ένα μεγάλο σύνολο ημι-δομημένων ή μη δομημένων δεδομένων, χρησιμοποιούμε προσέγγιση προσανατολισμένη στη στήλη. Όπως εφαρμογές που ασχολούνται Online Αναλυτική Επεξεργασία όπως εξόρυξη δεδομένων, αποθήκευση δεδομένων, εφαρμογές συμπεριλαμβανομένων αναλυτικών στοιχείων κ.λπ.
  • Ενώ, Διαδικτυακή επεξεργασία συναλλαγών όπως τομείς τραπεζών και χρηματοδότησης που χειρίζονται δομημένα δεδομένα και απαιτούν ιδιότητες συναλλαγών (ιδιότητες ACID) χρησιμοποιούν προσέγγιση προσανατολισμένη στη σειρά.

Οι πίνακες HBase έχουν τα ακόλουθα στοιχεία, όπως φαίνεται στην παρακάτω εικόνα:

  • Πίνακες : Τα δεδομένα αποθηκεύονται σε μορφή πίνακα στο HBase. Αλλά εδώ οι πίνακες είναι σε μορφή στήλης.
  • Σειρά Κλειδί : Τα πλήκτρα γραμμής χρησιμοποιούνται για την αναζήτηση εγγραφών που κάνουν τις αναζητήσεις γρήγορες. Θα θέλατε να μάθετε πώς; Θα το εξηγήσω στο τμήμα αρχιτεκτονικής προχωρώντας σε αυτό το blog.
  • Στήλη Οικογένειες : Διάφορες στήλες συνδυάζονται σε μια οικογένεια στηλών. Αυτές οι οικογένειες στηλών αποθηκεύονται μαζί, γεγονός που καθιστά τη διαδικασία αναζήτησης πιο γρήγορη, επειδή τα δεδομένα που ανήκουν στην ίδια οικογένεια στηλών μπορούν να προσπελαστούν μαζί σε μία αναζήτηση.
  • Στήλη Προκριματικοί : Το όνομα κάθε στήλης είναι γνωστό ως προσδιοριστής στήλης.
  • Κύτταρο : Τα δεδομένα αποθηκεύονται σε κελιά. Τα δεδομένα απορρίπτονται σε κελιά τα οποία προσδιορίζονται συγκεκριμένα από προσδιοριστές γραμμής κλειδιού και στήλης.
  • Χρονική σήμανση : Η χρονική σήμανση είναι ένας συνδυασμός ημερομηνίας και ώρας. Όποτε αποθηκεύονται δεδομένα, αποθηκεύονται με τη χρονική σήμανση. Αυτό καθιστά εύκολη την αναζήτηση μιας συγκεκριμένης έκδοσης δεδομένων.

Με έναν πιο απλό και κατανοητό τρόπο, μπορούμε να πούμε ότι το HBase αποτελείται από:

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

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

Αρχιτεκτονική HBase: Συστατικά της αρχιτεκτονικής HBase

Το HBase έχει τρία κύρια συστατικά, δηλαδή, Διακομιστής HMaster , Διακομιστής περιοχής HBase, περιοχές και Zookeeper .

Το παρακάτω σχήμα εξηγεί την ιεραρχία της αρχιτεκτονικής HBase. Θα μιλήσουμε για κάθε ένα ξεχωριστά.


Τώρα πριν πάμε στο HMaster, θα κατανοήσουμε τις περιοχές καθώς όλοι αυτοί οι διακομιστές (HMaster, Region Server, Zookeeper) είναι τοποθετημένοι για να συντονίζουν και να διαχειρίζονται τις περιοχές και να εκτελούν διάφορες λειτουργίες εντός των περιφερειών. Έτσι θα θέλατε να μάθετε ποιες είναι οι περιοχές και γιατί είναι τόσο σημαντικές;

Αρχιτεκτονική HBase: Περιοχή

Μια περιοχή περιέχει όλες τις σειρές μεταξύ του πλήκτρου έναρξης και του κλειδιού τερματισμού που έχει εκχωρηθεί σε αυτήν την περιοχή. Οι πίνακες HBase μπορούν να χωριστούν σε έναν αριθμό περιοχών με τέτοιο τρόπο ώστε όλες οι στήλες μιας οικογένειας στηλών να αποθηκεύονται σε μία περιοχή. Κάθε περιοχή περιέχει τις σειρές με ταξινομημένη σειρά.

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

Έτσι, καταλήγοντας με έναν απλούστερο τρόπο:

  • Ένας πίνακας μπορεί να χωριστεί σε διάφορες περιοχές. Η περιοχή είναι μια ταξινομημένη σειρά σειρών που αποθηκεύουν δεδομένα μεταξύ ενός κλειδιού έναρξης και κλειδιού τερματισμού.
  • Μια περιοχή έχει προεπιλεγμένο μέγεθος 256MB το οποίο μπορεί να διαμορφωθεί ανάλογα με τις ανάγκες.
  • Μια ομάδα περιοχών εξυπηρετείται στους πελάτες από έναν διακομιστή περιοχής.
  • Ένας διακομιστής περιοχής μπορεί να εξυπηρετήσει περίπου 1000 περιοχές στον πελάτη.

Τώρα ξεκινώντας από την κορυφή της ιεραρχίας, θα ήθελα πρώτα να σας εξηγήσω για τον HMaster Server που λειτουργεί παρόμοια με το NameNode στο HDFS . Στη συνέχεια, μεταβαίνοντας στην ιεραρχία, θα σας μεταφέρω μέσω του ZooKeeper και του Region Server.

Αρχιτεκτονική HBase: Χάστερ

Όπως στην παρακάτω εικόνα, μπορείτε να δείτε το HMaster χειρίζεται μια συλλογή του Region Server που βρίσκεται στο DataNode. Ας καταλάβουμε πώς το κάνει το HMaster.

  • Το HBase HMaster εκτελεί λειτουργίες DDL (δημιουργία και διαγραφή πινάκων) και εκχωρεί περιοχές στους διακομιστές περιοχής όπως μπορείτε να δείτε στην παραπάνω εικόνα.
  • Συντονίζει και διαχειρίζεται το Region Server (παρόμοιο με το NameNode διαχειρίζεται το DataNode σε HDFS).
  • Εκχωρεί περιοχές στους διακομιστές περιοχής κατά την εκκίνηση και εκχωρεί εκ νέου περιοχές σε διακομιστές περιοχής κατά την ανάκτηση και την εξισορρόπηση φορτίου.
  • Παρακολουθεί όλες τις εμφανίσεις του διακομιστή περιοχής στο σύμπλεγμα (με τη βοήθεια του Zookeeper) και εκτελεί δραστηριότητες ανάκτησης όποτε κάποιος διακομιστής περιοχής είναι εκτός λειτουργίας.
  • Παρέχει μια διεπαφή για τη δημιουργία, τη διαγραφή και την ενημέρωση πινάκων.

Το HBase έχει ένα κατανεμημένο και τεράστιο περιβάλλον όπου το HMaster από μόνο του δεν επαρκεί για τη διαχείριση όλων. Λοιπόν, αναρωτιέστε τι βοηθά το HMaster να διαχειριστεί αυτό το τεράστιο περιβάλλον; Εκεί έρχεται η φωτογραφία το ZooKeeper. Αφού καταλάβαμε πώς το HMaster διαχειρίζεται το περιβάλλον HBase, θα καταλάβουμε πώς το Zookeeper βοηθά το HMaster στη διαχείριση του περιβάλλοντος.

Αρχιτεκτονική HBase: ZooKeeper - Ο συντονιστής

Αυτή η παρακάτω εικόνα εξηγεί τον μηχανισμό συντονισμού του ZooKeeper.

  • Ο Zookeeper ενεργεί σαν συντονιστής στο κατανεμημένο περιβάλλον του HBase. Βοηθά στη διατήρηση της κατάστασης διακομιστή μέσα στο σύμπλεγμα επικοινωνώντας μέσω συνεδριών.
  • Κάθε διακομιστής περιοχής μαζί με τον διακομιστή HMaster στέλνει συνεχή καρδιακό παλμό σε τακτά χρονικά διαστήματα στο Zookeeper και ελέγχει ποιος διακομιστής είναι ζωντανός και διαθέσιμος όπως αναφέρεται στην παραπάνω εικόνα. Παρέχει επίσης ειδοποιήσεις αποτυχίας διακομιστή, έτσι ώστε να μπορούν να εκτελεστούν μέτρα αποκατάστασης.
  • Αναφερόμενοι από την παραπάνω εικόνα που μπορείτε να δείτε, υπάρχει ένας ανενεργός διακομιστής, ο οποίος λειτουργεί ως αντίγραφο ασφαλείας για τον ενεργό διακομιστή. Εάν ο ενεργός διακομιστής αποτύχει, έρχεται για τη διάσωση.
  • Το ενεργό HMaster στέλνει καρδιακούς παλμούς στο Zookeeper, ενώ το ανενεργό HMaster ακούει την ειδοποίηση αποστολής από το ενεργό HMaster. Εάν το ενεργό HMaster αποτύχει να στείλει καρδιακό παλμό, η συνεδρία διαγράφεται και το ανενεργό HMaster ενεργοποιείται.
  • Ενώ εάν ένας διακομιστής περιοχής αποτύχει να στείλει έναν καρδιακό παλμό, η συνεδρία λήγει και όλοι οι ακροατές ενημερώνονται σχετικά με αυτό. Στη συνέχεια, το HMaster εκτελεί κατάλληλες ενέργειες ανάκτησης τις οποίες θα συζητήσουμε αργότερα σε αυτό το ιστολόγιο.
  • Το Zookeeper διατηρεί επίσης τη διαδρομή του διακομιστή .META, η οποία βοηθά κάθε πελάτη στην αναζήτηση οποιασδήποτε περιοχής. Ο πελάτης πρέπει πρώτα να ελέγξει με τον .META Server στον οποίο Server Region μια περιοχή ανήκει και παίρνει τη διαδρομή αυτού του Region Server.

Καθώς μίλησα για τον .META Server, επιτρέψτε μου να σας εξηγήσω πρώτα τι είναι ο .META server; Έτσι, μπορείτε εύκολα να συσχετίσετε το έργο του ZooKeeper και του .META Server μαζί. Αργότερα, όταν θα σας εξηγήσω τον μηχανισμό αναζήτησης HBase σε αυτό το blog, θα σας εξηγήσω πώς λειτουργούν αυτά τα δύο σε συνεργασία.

Αρχιτεκτονική HBase: Μετα-Πίνακας

  • Ο πίνακας META είναι ένας ειδικός πίνακας καταλόγων HBase. Διατηρεί μια λίστα με όλους τους διακομιστές περιοχών στο σύστημα αποθήκευσης HBase, όπως μπορείτε να δείτε στην παραπάνω εικόνα.
  • Κοιτάζοντας τη φιγούρα που μπορείτε να δείτε, . ΜΕΤΑ Το αρχείο διατηρεί τον πίνακα με τη μορφή κλειδιών και τιμών. Το κλειδί αντιπροσωπεύει το κλειδί έναρξης της περιοχής και το αναγνωριστικό της, ενώ η τιμή περιέχει τη διαδρομή του διακομιστή περιοχής.

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

Αρχιτεκτονική HBase: Στοιχεία του διακομιστή περιοχής

Αυτή η παρακάτω εικόνα δείχνει τα στοιχεία ενός διακομιστή περιοχής. Τώρα, θα τα συζητήσω ξεχωριστά.

Ένας διακομιστής περιοχής διατηρεί διάφορες περιοχές που εκτελούνται στην κορυφή του . Τα στοιχεία ενός διακομιστή περιοχής είναι:

  • WAL: Όπως μπορείτε να συμπεράνετε από την παραπάνω εικόνα, το Write Ahead Log (WAL) είναι ένα αρχείο συνδεδεμένο σε κάθε διακομιστή περιοχής εντός του κατανεμημένου περιβάλλοντος. Το WAL αποθηκεύει τα νέα δεδομένα που δεν έχουν διατηρηθεί ή δεσμευτεί για τον μόνιμο χώρο αποθήκευσης. Χρησιμοποιείται σε περίπτωση αποτυχίας ανάκτησης των συνόλων δεδομένων.
  • Αποκλεισμός προσωρινής μνήμης: Από την παραπάνω εικόνα, είναι εμφανές ότι το Block Cache βρίσκεται στην κορυφή του Region Server. Αποθηκεύει τα δεδομένα που διαβάζονται συχνά στη μνήμη. Εάν τα δεδομένα στο BlockCache χρησιμοποιούνται λιγότερο πρόσφατα, τότε αυτά τα δεδομένα καταργούνται από το BlockCache.
  • MemStore: Είναι η προσωρινή μνήμη εγγραφής. Αποθηκεύει όλα τα εισερχόμενα δεδομένα προτού τα μεταφέρει στο δίσκο ή στη μόνιμη μνήμη. Υπάρχει ένα MemStore για κάθε οικογένεια στηλών σε μια περιοχή. Όπως μπορείτε να δείτε στην εικόνα, υπάρχουν πολλά MemStores για μια περιοχή, επειδή κάθε περιοχή περιέχει πολλές οικογένειες στηλών. Τα δεδομένα ταξινομούνται με λεξικογραφική σειρά πριν από τη δέσμευσή τους στο δίσκο.
  • HFile: Από την παραπάνω εικόνα μπορείτε να δείτε ότι το HFile είναι αποθηκευμένο σε HDFS. Έτσι αποθηκεύει τα πραγματικά κελιά στο δίσκο. Το MemStore δεσμεύει τα δεδομένα σε HFile όταν υπερβαίνει το μέγεθος του MemStore.

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

Αρχιτεκτονική HBase: Πώς ξεκινά η αναζήτηση στο HBase;

Όπως γνωρίζετε, το Zookeeper αποθηκεύει τη θέση του πίνακα META. Κάθε φορά που ένας πελάτης πλησιάζει με μια ανάγνωση ή εγγραφή αιτημάτων στο HBase, εμφανίζεται η ακόλουθη λειτουργία:

  1. Ο πελάτης ανακτά τη θέση του πίνακα META από το ZooKeeper.
  2. Στη συνέχεια, ο πελάτης ζητά τη θέση του διακομιστή περιοχής του αντίστοιχου κλειδιού γραμμής από τον πίνακα META για πρόσβαση σε αυτό. Ο πελάτης αποθηκεύει αυτές τις πληροφορίες στην τοποθεσία του πίνακα META.
  3. Στη συνέχεια, θα πάρει τη θέση της σειράς ζητώντας από τον αντίστοιχο διακομιστή περιοχής.

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

Όπως κάθε φορά, οι πελάτες δεν χάνουν χρόνο στην ανάκτηση της τοποθεσίας του διακομιστή περιοχής από το διακομιστή META, επομένως, εξοικονομεί χρόνο και κάνει τη διαδικασία αναζήτησης πιο γρήγορη. Τώρα, επιτρέψτε μου να σας πω πώς γίνεται η γραφή στο HBase. Ποια είναι τα στοιχεία που εμπλέκονται σε αυτό και πώς εμπλέκονται;

Αρχιτεκτονική HBase: Εγγραφή HBase Μηχανισμός

Αυτή η παρακάτω εικόνα εξηγεί το μηχανισμό εγγραφής στο HBase.

Ο μηχανισμός εγγραφής περνά διαδοχικά την ακόλουθη διαδικασία (ανατρέξτε στην παραπάνω εικόνα):

Βήμα 1: Κάθε φορά που ο πελάτης έχει ένα αίτημα εγγραφής, ο πελάτης γράφει τα δεδομένα στο WAL (Write Ahead Log).

  • Οι τροποποιήσεις επισυνάπτονται στη συνέχεια στο τέλος του αρχείου WAL.
  • Αυτό το αρχείο WAL διατηρείται σε κάθε διακομιστή περιοχής και ο διακομιστής περιοχής το χρησιμοποιεί για την ανάκτηση δεδομένων που δεν έχουν δεσμευτεί στο δίσκο.

Βήμα 2: Μόλις τα δεδομένα εγγραφούν στο WAL, τότε αντιγράφονται στο MemStore.

Βήμα 3: Μόλις τα δεδομένα τοποθετηθούν στο MemStore, τότε ο πελάτης λαμβάνει την επιβεβαίωση.

Βήμα 4: Όταν το MemStore φτάσει το όριο, απορρίπτει ή δεσμεύει τα δεδομένα σε HFile.

Τώρα ας κάνουμε μια βαθιά βουτιά και να καταλάβουμε πώς το MemStore συμβάλλει στη διαδικασία γραφής και ποιες είναι οι λειτουργίες του;

Εγγραφή HBase Μηχανισμός- MemStore

  • Το MemStore ενημερώνει πάντα τα δεδομένα που είναι αποθηκευμένα σε αυτό, με λεξικογραφική σειρά (διαδοχικά με λεξικό) ως ταξινομημένες KeyValues. Υπάρχει ένα MemStore για κάθε οικογένεια στηλών και έτσι οι ενημερώσεις αποθηκεύονται με ταξινομημένο τρόπο για κάθε οικογένεια στηλών.
  • Όταν το MemStore φτάσει το όριο, απορρίπτει όλα τα δεδομένα σε ένα νέο HFile με ταξινομημένο τρόπο. Αυτό το HFile αποθηκεύεται σε HDFS. Το HBase περιέχει πολλά HFiles για κάθε οικογένεια στηλών.
  • Με την πάροδο του χρόνου, ο αριθμός του HFile αυξάνεται καθώς το MemStore απορρίπτει τα δεδομένα.
  • Το MemStore αποθηκεύει επίσης τον τελευταίο γραπτό αριθμό ακολουθίας, έτσι ώστε ο Master Server και το MemStore να γνωρίζουν και οι δύο, ότι αυτό έχει δεσμευτεί μέχρι στιγμής και από πού να ξεκινήσει. Όταν ξεκινά η περιοχή, διαβάζεται ο τελευταίος αριθμός ακολουθίας και από αυτόν τον αριθμό ξεκινούν νέες τροποποιήσεις.

Όπως ανέφερα πολλές φορές, ότι το HFile είναι η κύρια μόνιμη αποθήκευση σε αρχιτεκτονική HBase. Επιτέλους, όλα τα δεδομένα έχουν δεσμευτεί στο HFile που είναι η μόνιμη αποθήκευση του HBase. Επομένως, ας δούμε τις ιδιότητες του HFile που το καθιστούν γρηγορότερο για αναζήτηση ενώ διαβάζετε και γράφετε.

Αρχιτεκτονική HBase: Εγγραφή HBase Μηχανισμός- HFile

  • Οι εγγραφές τοποθετούνται διαδοχικά στο δίσκο. Επομένως, η κίνηση της κεφαλής ανάγνωσης-εγγραφής του δίσκου είναι πολύ μικρότερη. Αυτό κάνει το μηχανισμό εγγραφής και αναζήτησης πολύ γρήγορα.
  • Τα ευρετήρια HFile φορτώνονται στη μνήμη κάθε φορά που ανοίγει ένα HFile. Αυτό βοηθά στην εύρεση ενός δίσκου σε μία αναζήτηση.
  • Το τρέιλερ είναι ένας δείκτης που δείχνει το μετα-μπλοκ του HFile. Είναι γραμμένο στο τέλος του δεσμευμένου αρχείου. Περιέχει πληροφορίες σχετικά με τη χρονική σήμανση και τα φίλτρα άνθισης.
  • Το Bloom Filter βοηθά στην αναζήτηση ζευγών τιμών κλειδιών, παραλείπει το αρχείο που δεν περιέχει το απαιτούμενο πλήκτρο γραμμής. Η χρονική σήμανση βοηθά επίσης στην αναζήτηση μιας έκδοσης του αρχείου, βοηθά στην παράλειψη των δεδομένων.

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

Αρχιτεκτονική HBase: Διαβάστε το μηχανισμό

Όπως συζητήθηκε στον μηχανισμό αναζήτησης, πρώτα ο πελάτης ανακτά τη θέση του διακομιστή περιοχής από τον διακομιστή .META εάν ο πελάτης δεν τον έχει στη μνήμη cache. Στη συνέχεια, ακολουθεί τα διαδοχικά βήματα ως εξής:

  • Για την ανάγνωση των δεδομένων, ο σαρωτής αναζητά πρώτα το κελί Row στην προσωρινή μνήμη Block. Εδώ αποθηκεύονται όλα τα ζεύγη τιμών κλειδιών που έχουν διαβαστεί πρόσφατα.
  • Εάν το Scanner δεν βρει το απαιτούμενο αποτέλεσμα, μετακινείται στο MemStore, καθώς γνωρίζουμε ότι αυτή είναι η μνήμη cache εγγραφής. Εκεί, αναζητά τα πιο πρόσφατα γραπτά αρχεία, τα οποία δεν έχουν ακόμη απορριφθεί στο HFile.
  • Επιτέλους, θα χρησιμοποιήσει φίλτρα άνθισης και θα αποκλείσει την προσωρινή μνήμη για να φορτώσει τα δεδομένα από το HFile.

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

Αρχιτεκτονική HBase: Συμπύκνωση

HBase συνδυάζει HFiles για να μειώσει την αποθήκευση και να μειώσει τον αριθμό των αναζητήσεων δίσκου που απαιτούνται για μια ανάγνωση. Αυτή η διαδικασία ονομάζεται συμπίεση . Η Compaction επιλέγει μερικά HFiles από μια περιοχή και τα συνδυάζει. Υπάρχουν δύο τύποι συμπίεσης όπως μπορείτε να δείτε στην παραπάνω εικόνα.

  1. Μικρή συμπύκνωση : Το HBase επιλέγει αυτόματα μικρότερα HFiles και τα προτείνει σε μεγαλύτερα HFiles όπως φαίνεται στην παραπάνω εικόνα. Αυτό ονομάζεται Μικρή Συμπύκνωση. Εκτελεί είδος συγχώνευσης για τη δέσμευση μικρότερων HFiles σε μεγαλύτερα HFiles. Αυτό βοηθά στη βελτιστοποίηση χώρου αποθήκευσης.
  2. Σημαντική συμπύκνωση: Όπως απεικονίζεται στην παραπάνω εικόνα, στο Major συμπύκνωση, το HBase συγχωνεύει και επαναφέρει τα μικρότερα HFiles μιας περιοχής σε ένα νέο HFile. Σε αυτήν τη διαδικασία, οι ίδιες οικογένειες στηλών τοποθετούνται μαζί στο νέο HFile. Πέφτει διαγραμμένο και ληγμένο κελί σε αυτήν τη διαδικασία. Αυξάνει την απόδοση ανάγνωσης.

Ωστόσο, κατά τη διάρκεια αυτής της διαδικασίας, οι δίσκοι εισόδου-εξόδου και η κίνηση του δικτύου ενδέχεται να έχουν συμφόρηση. Αυτό είναι γνωστό ως ενίσχυση εγγραφής . Έτσι, είναι γενικά προγραμματισμένο κατά τη διάρκεια των χαμηλών ωρών φόρτωσης.

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

υλοποιήστε ελάχιστο σωρό σε java

Αρχιτεκτονική HBase: Περιοχή διαχωρισμού

Το παρακάτω σχήμα απεικονίζει τον μηχανισμό διαίρεσης περιοχής.

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

Μεταβαίνοντας στη γραμμή, τελευταίο αλλά το λιγότερο σημαντικό, θα σας εξηγήσω πώς η HBase ανακτά δεδομένα μετά από μια αποτυχία. Όπως το γνωρίζουμε Αποκατάσταση αποτυχίας είναι ένα πολύ σημαντικό χαρακτηριστικό του HBase, επομένως ενημερώστε μας πώς το HBase ανακτά δεδομένα μετά από μια αποτυχία.

Αρχιτεκτονική HBase: HBase Crash και ανάκτηση δεδομένων

  • Κάθε φορά που αποτυγχάνει ένας διακομιστής περιοχής, το ZooKeeper ειδοποιεί το HMaster για την αποτυχία.
  • Στη συνέχεια, το HMaster διανέμει και εκχωρεί τις περιοχές του διακομιστή περιοχής που έχει καταρρεύσει σε πολλούς ενεργούς διακομιστές περιοχής. Για να ανακτήσετε τα δεδομένα του MemStore του αποτυχημένου διακομιστή περιοχής, το HMaster διανέμει το WAL σε όλους τους διακομιστές περιοχής.
  • Κάθε διακομιστής περιοχής εκτελεί ξανά το WAL για να δημιουργήσει το MemStore για την οικογένεια στηλών της αποτυχημένης περιοχής.
  • Τα δεδομένα γράφονται με χρονολογική σειρά (έγκαιρα) στο WAL. Επομένως, η εκ νέου εκτέλεση αυτού του WAL σημαίνει να κάνετε όλες τις αλλαγές που έγιναν και αποθηκεύτηκαν στο αρχείο MemStore.
  • Έτσι, αφού όλοι οι διακομιστές περιοχής εκτελέσουν το WAL, ανακτώνται τα δεδομένα MemStore για όλη την οικογένεια στηλών.

Ελπίζω ότι αυτό το blog θα σας βοηθούσε να υποτιμήσετε το HBase Data Model & HBase Architecture. Ελπίζω να το απολαύσατε. Τώρα μπορείτε να συσχετιστείτε με τα χαρακτηριστικά του HBase (τα οποία εξήγησα στο προηγούμενο Εκπαιδευτικό HBase blog) με το HBase Architecture και κατανοήστε πώς λειτουργεί εσωτερικά. Τώρα που γνωρίζετε το θεωρητικό μέρος του HBase, θα πρέπει να μεταβείτε στο πρακτικό μέρος. Έχοντας αυτό υπόψη, το επόμενο ιστολόγιό μας της θα εξηγήσει ένα δείγμα HBase POC .

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

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