Πώς να εγκαταστήσετε και να διαμορφώσετε το Hive με υψηλή διαθεσιμότητα – Μέρος 7


Το Hive είναι ένα μοντέλο Data Warehouse στο Hadoop Eco-System. Μπορεί να λειτουργήσει ως εργαλείο ETL πάνω από το Hadoop. Η ενεργοποίηση της Υψηλής Διαθεσιμότητας (HA) στο Hive δεν είναι παρόμοια με τις Κύριες υπηρεσίες όπως το Namenode και το Resource Manager.

Η αυτόματη ανακατεύθυνση δεν θα συμβεί στο Hive (Hiveserver2). Εάν αποτύχει οποιοσδήποτε Hiveserver2 (HS2), οι εργασίες που εκτελούνται σε αυτό το αποτυχημένο HS2 θα αποτύχουν. Πρέπει να υποβάλουμε ξανά την εργασία, ώστε η εργασία να μπορεί να εκτελεστεί σε άλλο HiveServer2. Επομένως, η ενεργοποίηση του HA στο HS2 δεν είναι παρά η αύξηση του αριθμού των στοιχείων HS2 στο Cluster.

Σε αυτό το άρθρο, θα δούμε τα βήματα για την εγκατάσταση και την ενεργοποίηση της Υψηλής διαθεσιμότητας του Hive.

Απαιτήσεις

  • Βέλτιστες πρακτικές για την ανάπτυξη του διακομιστή Hadoop στο CentOS/RHEL 7 – Μέρος 1
  • Ρύθμιση προαπαιτούμενων Hadoop και σκλήρυνσης ασφαλείας – Μέρος 2
  • Πώς να εγκαταστήσετε και να ρυθμίσετε το Cloudera Manager στο CentOS/RHEL 7 – Μέρος 3
  • Πώς να εγκαταστήσετε το CDH και να ρυθμίσετε τις τοποθετήσεις υπηρεσίας στο CentOS/RHEL 7 – Μέρος 4
  • Πώς να ρυθμίσετε την υψηλή διαθεσιμότητα για το Namenode – Μέρος 5
  • Πώς να ρυθμίσετε την υψηλή διαθεσιμότητα για τη Διαχείριση πόρων – Μέρος 6

Ας αρχίσουμε…

Εγκατάσταση και διαμόρφωση Hive

1. Συνδεθείτε στο Cloudera Manager στην παρακάτω διεύθυνση URL και μεταβείτε στο Cloudera Manager –> Προσθήκη υπηρεσίας .

http://13.233.129.39:7180/cmf/home

2. Επιλέξτε την υπηρεσία "Κυψέλη".

3. Εκχωρήστε τις υπηρεσίες σε κόμβους.

  • Gateway – Είναι η υπηρεσία πελάτη όπου ο χρήστης μπορεί να έχει πρόσβαση στο Hive. Συνήθως, αυτή η υπηρεσία θα τοποθετείται σε κόμβους Edge που είναι αφιερωμένοι στους χρήστες.
  • Hive Metastore – Είναι ένα κεντρικό αποθετήριο για την αποθήκευση των Hive Metadata.
  • Διακομιστής WebHCat – Είναι ένα Web API για HCatalog και άλλες υπηρεσίες Hadoop.
  • Hiveserver2 – Είναι μια διεπαφή πελατών για την εκτέλεση ερωτημάτων στο Hive.

Αφού επιλέξετε τους διακομιστές, κάντε κλικ στην επιλογή "Συνέχεια" για να συνεχίσετε.

4. Το Hive Metastore χρειάζεται μια υποκείμενη βάση δεδομένων για την αποθήκευση των μεταδεδομένων. Εδώ χρησιμοποιούμε την προεπιλεγμένη βάση δεδομένων PostgreSQL η οποία είναι ενσωματωμένη με CDH.

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

5. Διαμορφώστε τον κατάλογο Hive Warehouse, το /user/hive/warehouse είναι η προεπιλεγμένη διαδρομή καταλόγου για την αποθήκευση πινάκων Hive. Κάντε κλικ στο "Συνέχεια".

6. Ξεκίνησε η εγκατάσταση του Hive.

7. Μόλις ολοκληρωθεί η εγκατάσταση, μπορείτε να λάβετε την κατάσταση "Ολοκληρώθηκε". Κάντε κλικ στην επιλογή "Συνέχεια" για να προχωρήσετε περαιτέρω.

8. Η εγκατάσταση και η διαμόρφωση του Hive ολοκληρώθηκαν με επιτυχία. Κάντε κλικ στο «Τέλος» για να ολοκληρώσετε τη διαδικασία εγκατάστασης.

9. Μπορείτε να δείτε την υπηρεσία Hive που προστέθηκε στο Cluster μέσω του Πίνακα ελέγχου του Cloudera Manager.

10. Μπορείτε να προβάλετε τον Hiveserver2 σε Περιπτώσεις του Hive. Προσθέσαμε τον Hiveserver2 στο master1.

Cloudera Manager –> Hive –> Περιπτώσεις –> Hiveserver2.

Ενεργοποίηση υψηλής διαθεσιμότητας στο Hive

11. Στη συνέχεια, προσθέστε τον ρόλο Hive μεταβαίνοντας στο Cloudera Manager –> Hive –> Ενέργειες –> Προσθήκη περιπτώσεων ρόλων.

12. Επιλέξτε τους διακομιστές στους οποίους θέλετε να τοποθετήσετε επιπλέον Hiveserver2. Μπορείτε να προσθέσετε περισσότερα από δύο, δεν υπάρχει όριο. Εδώ προσθέτουμε έναν επιπλέον Hiveserver2 στο master2.

13. Αφού επιλέξετε τον διακομιστή, κάντε κλικ στην επιλογή "Συνέχεια".

14. Ένας Hiverserver2 θα προστεθεί στις Περιπτώσεις Hive, πρέπει να το ξεκινήσετε μεταβαίνοντας στο Cloudera Manager –> Hive –> Περιπτώσεις –> (Επιλέξτε Hiveserver2 προστέθηκε πρόσφατα) –> Ενέργεια για επιλεγμένα –> Έναρξη.

15. Μόλις ξεκινήσει το Hiveserver2 στο master2, θα λάβετε την κατάσταση "Ολοκληρώθηκε". Κάντε κλικ στο Κλείσιμο.

16. Μπορείτε να δείτε, εκτελούνται και οι δύο Hiveserver2s.

Επαλήθευση της διαθεσιμότητας της κυψέλης

Μπορούμε να συνδέσουμε τον Hiveserver2 μέσω της γραμμής beeline που είναι ένας thin client και γραμμή εντολών. Χρησιμοποιεί το πρόγραμμα οδήγησης JDBC για να δημιουργήσει τη σύνδεση.

17. Συνδεθείτε στον διακομιστή όπου εκτελείται το Hive Gateway.

[tecmint@master1 ~]$ beeline

18. Εισαγάγετε τη συμβολοσειρά σύνδεσης JDBC για να συνδέσετε τον Hiveserver2. Σε αυτό το πλαίσιο, η συμβολοσειρά που αναφέρουμε είναι ο Hiverserver2 (master2) με τον προεπιλεγμένο αριθμό θύρας 10000. Αυτή η συμβολοσειρά σύνδεσης θα συνδεθεί μόνο στον Hiveserver2 που εκτελείται στο master2.

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. Εκτελέστε ένα δείγμα ερωτήματος.

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

Αυτή είναι η προεπιλεγμένη βάση δεδομένων που είναι ενσωματωμένη.

20. Χρησιμοποιήστε την παρακάτω εντολή για να τερματίσετε την περίοδο λειτουργίας Hive.

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. Μπορείτε να χρησιμοποιήσετε τον ίδιο τρόπο για να συνδέσετε τον Hiveserver2 που εκτελείται στο master2.

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. Μπορούμε να συνδέσουμε τον Hiveserver2 σε λειτουργία Zookeeper Discovery. Σε αυτήν τη μέθοδο, δεν χρειάζεται να αναφέρουμε τον Hiveserver2 στη συμβολοσειρά σύνδεσης, αλλά χρησιμοποιούμε το Zookeeper για να ανακαλύψουμε τον διαθέσιμο Hiveserver2.

Εδώ μπορούμε να χρησιμοποιήσουμε έναν εξισορροπητή φορτίου τρίτου κατασκευαστή για να εξισορροπήσουμε το φορτίο μεταξύ των διαθέσιμων Hiverserver2. Η παρακάτω διαμόρφωση χρειάζεται για να ενεργοποιήσετε τη Λειτουργία εντοπισμού Zookeeper μεταβαίνοντας στο Cloudera Manager –> Hive –> Διαμόρφωση.

24. Στη συνέχεια, αναζητήστε την ιδιότητα "HiveServer2 Advanced Configuration Snippet " και κάντε κλικ στο σύμβολο + για να προσθέσετε την παρακάτω ιδιότητα.

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. Μόλις εισαγάγετε την ιδιότητα, κάντε κλικ στην επιλογή "Αποθήκευση αλλαγών".

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

27. Κάντε κλικ στις υπηρεσίες "Επανεκκίνηση Stale".

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

29. Μόλις ολοκληρωθεί με επιτυχία η επανεκκίνηση, θα λάβετε την κατάσταση "Ολοκληρώθηκε". Κάντε κλικ στο «Τέλος» για να ολοκληρώσετε τη διαδικασία.

30. Τώρα θα συνδέσουμε τον Hiveserver2 χρησιμοποιώντας τη λειτουργία Zookeeper Discovery. Στη σύνδεση JDBC, η συμβολοσειρά που χρειαζόμαστε για να χρησιμοποιήσουμε τους διακομιστές Zookeeper με τον αριθμό θύρας 2081. Συλλέξτε τους διακομιστές Zookeeper μεταβαίνοντας στο Cloudera Manager –> Zookeeper –> Περιπτώσεις –> (Σημειώστε τα ονόματα των διακομιστών).

Αυτοί είναι οι τρεις διακομιστές που διαθέτουν Zookeeper, 2181 είναι ο αριθμός θύρας.

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. Τώρα μπείτε στο beeline.

[tecmint@master1 ~]$ beeline

32. Εισαγάγετε τη συμβολοσειρά σύνδεσης JDBC όπως αναφέρεται παρακάτω. Πρέπει να αναφέρουμε τη Λειτουργία εντοπισμού υπηρεσίας και τον Χώρο ονομάτων Zookeeper. Το "hiveserver2" είναι ο προεπιλεγμένος χώρος ονομάτων του Hiveserver2.

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. Τώρα η περίοδος σύνδεσης είναι συνδεδεμένη με τον Hiveserver2 που εκτελείται στο master1. Εκτελέστε ένα δείγμα ερωτήματος για επικύρωση. Χρησιμοποιήστε την παρακάτω εντολή για να δημιουργήσετε μια βάση δεδομένων.

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. Χρησιμοποιήστε την παρακάτω εντολή για να παραθέσετε τη βάση δεδομένων.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. Τώρα θα επικυρώσουμε την Υψηλή Διαθεσιμότητα στη Λειτουργία Ανακάλυψης Zookeeper. Μεταβείτε στο Cloudera Manager και σταματήστε τον Hiveserver2 στο master1 που δοκιμάσαμε παραπάνω.

Cloudera Manager –> Hive –> Περιπτώσεις –> (επιλέξτε Hiveserver2 στο master1 ) –> Ενέργεια για επιλεγμένα –> Διακοπή.

36. Κάντε κλικ στο "Διακοπή". Μόλις σταματήσετε, θα λάβετε την κατάσταση "Ολοκληρώθηκε". Επαληθεύστε τον Hiveserver2 στο master1 μεταβαίνοντας στο Hive –> Περιπτώσεις.

37. Μπείτε στη γραμμή beeline και συνδέστε τον Hiveserver2 χρησιμοποιώντας την ίδια συμβολοσειρά σύνδεσης JDBC με το Zookeeper Discovery Modeόπως κάναμε στα παραπάνω βήματα.

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

Τώρα θα συνδεθείτε στον Hiveserver2 που εκτελείται σε master2.

38. Επικύρωση με ένα δείγμα ερωτήματος.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

συμπέρασμα

Σε αυτό το άρθρο, έχουμε ακολουθήσει τα λεπτομερή βήματα για να έχουμε το μοντέλο Hive Data Warehouse στο Cluster μας με Υψηλή διαθεσιμότητα. Σε ένα περιβάλλον παραγωγής σε πραγματικό χρόνο, θα τοποθετηθούν περισσότεροι από τρεις Hiveserver2 με ενεργοποιημένη τη Λειτουργία εντοπισμού Zookeeper.

Εδώ, όλα τα Hiveserver2 εγγράφονται στο Zookeeper σε έναν κοινό Χώρο ονομάτων. Το Zookeeper Dynamically ανακαλύπτει τον διαθέσιμο Hiveserver2 και δημιουργεί την περίοδο λειτουργίας Hive.