Πληροφορίες για την αρχιτεκτονική HBase



Αυτή η ανάρτηση ασχολείται με το HBase και πληροφορίες για την αρχιτεκτονική HBase. Συζητά επίσης στοιχεία Hbase όπως Master, Region server και Zoo keeper και πώς να τα χρησιμοποιήσετε.

Στη σημερινή ανάρτηση ας συζητήσουμε για την αρχιτεκτονική HBase. Ας ανανεώσουμε τα βασικά μας στοιχεία του HBase προτού εμβαθύνουμε στην αρχιτεκτονική του HBase.





HBase - Τα βασικά:

Το HBase είναι ένα ανοικτού κώδικα, NoSQL, διανεμημένο, μη σχετικό, εκδομένο, πολυδιάστατο, προσανατολισμένο στη στήλη κατάστημα που έχει μοντελοποιηθεί σύμφωνα με το Google BigTable που τρέχει πάνω από HDFS. Το 'NoSQL' είναι ένας γενικός όρος που σημαίνει ότι η βάση δεδομένων δεν είναι RDBMS που υποστηρίζει τη SQL ως κύρια γλώσσα πρόσβασης. Αλλά υπάρχουν πολλοί τύποι βάσεων δεδομένων NoSQL και το Berkeley DB είναι ένα καλό παράδειγμα μιας τοπικής βάσης δεδομένων NoSQL, ενώ το HBase είναι πολύ μια κατανεμημένη βάση δεδομένων.

Το HBase παρέχει όλες τις δυνατότητες του Google BigTable. Ξεκίνησε ως έργο από την Powerset για την επεξεργασία τεράστιων ποσοτήτων δεδομένων για αναζήτηση φυσικής γλώσσας. Αναπτύχθηκε ως μέρος του έργου Hadoop του Apache και τρέχει πάνω από HDFS (Hadoop Distributed File System). Παρέχει ανεκτικούς τρόπους αποθήκευσης μεγάλων ποσοτήτων αραιών δεδομένων. Το HBase είναι πραγματικά περισσότερο ένα 'Data Store' από το 'Data Base', επειδή δεν διαθέτει πολλές από τις διαθέσιμες λειτουργίες στο RDBMS, όπως στήλες που έχουν πληκτρολογηθεί, δευτερεύοντα ευρετήρια, ενεργοποιητές και προηγμένες γλώσσες ερωτημάτων κ.λπ.



αυξάνοντας έναν αριθμό σε μια δύναμη στο java

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

Πότε να πάτε για HBase;

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

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

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



Πληροφορίες για την αρχιτεκτονική HBase

Στο HBase, υπάρχουν τρία κύρια στοιχεία: Κύριος, διακομιστής περιοχής και φύλακας ζωολογικών κήπων . Τα άλλα συστατικά είναι Memstore, HFile και WAL.

Καθώς το HBase λειτουργεί πάνω από HDFS, χρησιμοποιεί την αρχιτεκτονική Master-Slave στην οποία το HMaster θα είναι ο κύριος κόμβος και οι διακομιστές περιοχής είναι οι δευτερεύοντες κόμβοι. Όταν ο πελάτης στέλνει ένα αίτημα εγγραφής, το HMaster λαμβάνει αυτό το αίτημα και το προωθεί στον αντίστοιχο διακομιστή περιοχής.

Διακομιστής περιοχής:

Είναι ένα σύστημα που λειτουργεί παρόμοιο με έναν κόμβο δεδομένων. Όταν ο διακομιστής περιοχής (RS) λαμβάνει αίτημα εγγραφής, κατευθύνει το αίτημα σε συγκεκριμένη περιοχή. Κάθε Περιοχή αποθηκεύει σειρά σειρών. Τα δεδομένα σειρών μπορούν να διαχωριστούν σε πολλές οικογένειες στηλών (CF). Δεδομένα συγκεκριμένου CF αποθηκεύονται στο HStore που αποτελείται από Memstore και ένα σύνολο HFiles.

Τι κάνει το Memstore;

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

Ο βασικός σκοπός για τη χρήση του Memstore είναι η ανάγκη αποθήκευσης δεδομένων στο DFS με σειρά με κλειδί σειράς. Καθώς το HDFS έχει σχεδιαστεί για διαδοχικές αναγνώσεις / εγγραφές, χωρίς να επιτρέπονται τροποποιήσεις αρχείων, το HBase δεν μπορεί να γράφει αποτελεσματικά δεδομένα στο δίσκο όπως λαμβάνεται: τα γραπτά δεδομένα δεν θα ταξινομηθούν (όταν η είσοδος δεν ταξινομηθεί) που σημαίνει ότι δεν βελτιστοποιούνται για μελλοντικά ανάκτηση. Για την επίλυση αυτού του προβλήματος, τα buffer HBase έλαβαν τελευταία δεδομένα στη μνήμη (στο Memstore), το «τακτοποιεί» πριν από την έξαψη και μετά γράφει στο HDFS χρησιμοποιώντας γρήγορες διαδοχικές εγγραφές. Ως εκ τούτου, το HFile περιέχει μια λίστα με ταξινομημένες σειρές.

η συμβολοσειρά είναι μεταβλητή ή αμετάβλητη σε java

Κάθε φορά που το Memstore flush συμβαίνει ένα HFile που δημιουργείται για κάθε CF και οι συχνές flushes μπορεί να δημιουργήσουν τόνους HFiles. Δεδομένου ότι κατά την ανάγνωση το HBase θα πρέπει να εξετάσει πολλά HFiles, η ταχύτητα ανάγνωσης μπορεί να υποφέρει. Για να αποφευχθεί το άνοιγμα πάρα πολλών HFiles και να αποφευχθεί η επιδείνωση της απόδοσης ανάγνωσης, χρησιμοποιείται η διαδικασία συμπύκνωσης HFiles. Το HBase περιοδικά (όταν πληρούνται ορισμένα ρυθμιζόμενα όρια) συμπιέζει πολλαπλά μικρότερα HFiles σε ένα μεγάλο. Προφανώς, όσο περισσότερα αρχεία δημιουργούνται από το Memstore flushes, τόσο περισσότερη δουλειά (επιπλέον φορτίο) για το σύστημα. Προστέθηκε σε αυτό, ενώ η διαδικασία συμπίεσης εκτελείται συνήθως παράλληλα με την εξυπηρέτηση άλλων αιτημάτων και όταν το HBase δεν μπορεί να συμβαδίσει με τη συμπίεση HFiles (ναι, υπάρχουν και ρυθμισμένα όρια για αυτό), θα αποκλείσει τις εγγραφές ξανά στο RS. Όπως συζητήσαμε παραπάνω, αυτό είναι πολύ ανεπιθύμητο.

Δεν μπορούμε να είμαστε σίγουροι ότι τα δεδομένα θα παραμείνουν σε ολόκληρο το Memstore. Ας υποθέσουμε ότι ένα συγκεκριμένο datanode είναι κάτω. Στη συνέχεια, τα δεδομένα που βρίσκονται στη μνήμη αυτού του κόμβου δεδομένων θα χαθούν.

Για να ξεπεραστεί αυτό το πρόβλημα, όταν το αίτημα προέρχεται από τον κύριο, έγραψε επίσης στο WAL. Το WAL δεν είναι παρά Γράψε μπροστά αρχεία καταγραφής που βρίσκεται στο HDFS, μια μόνιμη αποθήκευση. Τώρα μπορούμε να διασφαλίσουμε ότι ακόμη και όταν ο κόμβος δεδομένων είναι εκτός λειτουργίας, τα δεδομένα δεν θα χαθούν. Δηλαδή έχουμε το αντίγραφο όλων των ενεργειών που πρέπει να κάνετε στο WAL. Όταν ο κόμβος δεδομένων είναι επάνω, θα εκτελέσει ξανά όλες τις δραστηριότητες. Μόλις ολοκληρωθεί η λειτουργία, όλα ξεπλένονται από το Memstore και το WAL και γράφονται στο HFile για να βεβαιωθούμε ότι δεν έχουμε εξαντληθεί η μνήμη.

Ας πάρουμε ένα απλό παράδειγμα που θέλω να προσθέσω τη σειρά 10 και έπειτα εισέρχεται το αίτημα εγγραφής, λέει ότι δίνει όλα τα μετα-δεδομένα στο Memstore και το WAL. Μόλις η συγκεκριμένη σειρά γράφεται στο HFile τα πάντα στο Memstore και το WAL ξεδιπλώνεται.

Φύλακας ζωολογικών κήπων:

Το HBase είναι ενσωματωμένο στο Zoo keeper. Όταν ξεκινώ το HBase, ξεκινά επίσης η παρουσία του Zoo Keeper. Ο λόγος είναι ότι ο φύλακας ζωολογικών κήπων μας βοηθά να παρακολουθούμε όλους τους διακομιστές περιοχής που υπάρχουν για το HBase. Ο κάτοχος ζωολογικού κήπου παρακολουθεί πόσους διακομιστές περιοχής υπάρχουν, ποιοι διακομιστές περιοχής κρατούν από ποιον κόμβο δεδομένων σε ποιον κόμβο δεδομένων. Παρακολουθεί μικρότερα σύνολα δεδομένων όπου λείπει το Hadoop. Μειώνει τα γενικά έξοδα στην κορυφή του Hadoop που παρακολουθεί τα περισσότερα από τα Meta δεδομένα σας. Ως εκ τούτου, το HMaster λαμβάνει τις λεπτομέρειες των διακομιστών περιοχής επικοινωνώντας πραγματικά με το Zoo keeper.

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

πώς να μετατρέψετε τη συμβολοσειρά σε ημερομηνία

Σχετικές αναρτήσεις:

Χρήσιμες εντολές κυψελών