Website-Suche

Installieren und Konfigurieren von Hive mit Hochverfügbarkeit – Teil 7


Hive ist ein Data Warehouse-Modell im Hadoop Eco-System. Es kann als ETL-Tool auf Hadoop aufsetzen. Das Aktivieren von Hochverfügbarkeit (High Availability, HA) in Hive ist nicht vergleichbar mit dem in Masterdiensten wie Namenode und Resource Manager.

In Hive (Hiveserver2) findet kein automatisches Failover statt. Wenn ein Hiveserver2 (HS2) ausfällt, wird das Ausführen von Aufträgen auf diesem fehlerhaften HS2 fehlschlagen. Wir müssen den Auftrag erneut übermitteln, damit er auf einem anderen HiveServer2 ausgeführt werden kann. Die Aktivierung von HA auf HS2 ist also nichts anderes, als die Anzahl der HS2-Komponenten im Cluster zu erhöhen.

In diesem Artikel sehen wir die Schritte zum Installieren und Aktivieren der Hochverfügbarkeit von Hive.

Anforderungen

  • Best Practices für die Bereitstellung von Hadoop Server unter CentOS/RHEL 7 – Teil 1
  • Einrichten von Hadoop-Voraussetzungen und Härtung der Sicherheit – Teil 2
  • So installieren und konfigurieren Sie den Cloudera Manager unter CentOS/RHEL 7 – Teil 3
  • So installieren Sie CDH und konfigurieren Service Placements unter CentOS/RHEL 7 – Teil 4
  • So richtest du Hochverfügbarkeit für Namenode ein – Teil 5
  • Einrichten der Hochverfügbarkeit für Resource Manager – Teil 6

Fangen wir an...

Installation und Konfiguration von Hive

1. Melden Sie sich unter der folgenden URL bei Cloudera Manager an und navigieren Sie zu Cloudera Manager –> Add Service.

http://13.233.129.39:7180/cmf/home

2. Wählen Sie den Dienst "Hive" aus.

3. Ordnen Sie die Services auf Knoten zu.

  • Gateway – Dies ist der Clientdienst, über den der Benutzer auf die Hive zugreifen kann. In der Regel wird dieser Dienst in Edge-Knoten platziert, die den Benutzern zugewiesen sind.
  • Hive Metastore – Es ist ein zentrales Repository zum Speichern von Hive-Metadaten.
  • WebHCat Server – Es handelt sich um eine Web-API für HCatalog und andere Hadoop-Dienste.
  • Hiveserver2 – Es handelt sich um eine Schnittstelle von Clients für die Abfrageausführung in Hive.

Nachdem Sie die Server ausgewählt haben, klicken Sie auf "Weiter", um fortzufahren.

4. Der Hive-Metastore benötigt eine zugrunde liegende Datenbank zum Speichern von Metadaten. Hier verwenden wir die Standard-PostgreSQL-Datenbank, die in CDH integriert ist.

Die unten genannten Datenbankdetails werden automatisch eingegeben, 'Verbindung testen' wird übersprungen, da die erwähnte Datenbank im laufenden Betrieb erstellt wird. In Echtzeit müssen wir die Datenbank in der externen Datenbank erstellen und die Verbindung testen, um fortzufahren. Wenn Sie fertig sind, klicken Sie bitte auf "Weiter".

5. Konfigurieren Sie das Hive-Warehouse-Verzeichnis, /user/hive/warehouse ist der Standardverzeichnispfad zum Speichern von Hive-Tabellen. Klicken Sie auf "Weiter".

6. Die Installation von Hive wird gestartet.

7. Sobald die Installation abgeschlossen ist, können Sie den Status "Fertig" erhalten. Klicken Sie auf "Weiter", um fortzufahren.

8. Die Installation und Konfiguration von Hive wurde erfolgreich abgeschlossen. Klicken Sie auf "Fertigstellen", um den Installationsvorgang abzuschließen.

9. Sie können den Hive-Dienst, der im Cluster hinzugefügt wurde, über das Cloudera Manager Dashboard sehen.

10. Sie können den Hiveserver2 in Instanzen von Hive anzeigen. Wir haben Hiveserver2 in master1 hinzugefügt.

Cloudera Manager –> Hive –> Instanzen –> Hiveserver2.

Aktivieren von Hochverfügbarkeit in Hive

11. Fügen Sie als Nächstes die Hive-Rolle hinzu, indem Sie zu Cloudera Manager –> Hive –> Aktionen –> Rolleninstanzen hinzufügen wechseln.

12. Wählen Sie die Server aus, auf denen Sie zusätzlichen Hiveserver2 platzieren möchten. Sie können mehr als zwei hinzufügen, es gibt keine Begrenzung. Hier fügen wir einen zusätzlichen Hiveserver2 in master2 hinzu.

13. Nachdem Sie den Server ausgewählt haben, klicken Sie auf "Weiter".

14. Ein Hiverserver2 wird zu den Hive-Instanzen hinzugefügt, Sie müssen ihn starten, indem Sie zu Cloudera Manager –> Hive –> Instances –> gehen (wählen Sie Hiveserver2 neu hinzugefügt) –> Aktion für Ausgewählt –> Start.

15. Sobald Hiveserver2 auf master2 gestartet wurde, erhalten Sie den Status 'Fertig'. Klicken Sie auf Schließen.

16. Sie können sehen, dass beide Hiveserver2s laufen.

Überprüfen der Verfügbarkeit der Struktur

Wir können den Hiveserver2 über die Beeline verbinden, die ein Thin Client und eine Befehlszeile ist. Es verwendet den JDBC-Treiber, um die Verbindung herzustellen.

17. Melden Sie sich beim Server an, auf dem Hive Gateway ausgeführt wird.

[tecmint@master1 ~]$ beeline

18. Geben Sie die JDBC-Verbindungszeichenfolge ein, um den Hiveserver2 zu verbinden. In diesem Zusammenhang ist der String, den wir erwähnen, der Hiverserver2 (master2) mit seiner Standardportnummer 10000. Diese Verbindungszeichenfolge stellt nur eine Verbindung mit dem Hiveserver2 her, der auf master2 ausgeführt wird.

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

19. Führen Sie eine Beispielabfrage aus.

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

Dies ist die integrierte Standarddatenbank.

20. Verwenden Sie den folgenden Befehl, um die Hive-Sitzung zu beenden.

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

21. Sie können auf die gleiche Weise den Hiveserver2 verbinden, der auf master2 ausgeführt wird.

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

23. Wir können den Hiveserver2 im Zookeeper Discovery-Modus verbinden. Bei dieser Methode müssen wir den Hiveserver2 nicht in der Verbindungszeichenfolge erwähnen, stattdessen verwenden wir Zookeeper, um den verfügbaren Hiveserver2 zu ermitteln.

Hier können wir einen Load Balancer eines Drittanbieters verwenden, um die Last auf den verfügbaren Hiverserver2 auszugleichen. Die folgende Konfiguration ist erforderlich, um den Zookeeper-Ermittlungsmodus zu aktivieren, indem Sie zu Cloudera Manager –> Hive –> Konfiguration wechseln.

24. Suchen Sie als Nächstes die Eigenschaft "HiveServer2 Advanced Configuration Snippet" und klicken Sie auf das +-Symbol, um die folgende Eigenschaft hinzuzufügen.

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

25. Sobald Sie die Eigenschaft eingegeben haben, klicken Sie auf "Änderungen speichern".

26. Da wir Änderungen an der Konfiguration vorgenommen haben, müssen Sie die betroffenen Dienste neu starten, indem Sie auf das orangefarbene Farbsymbol klicken, um die Dienste neu zu starten.

27. Klicken Sie auf "Veraltete Dienste neu starten".

28. Es stehen zwei Optionen zur Verfügung. Wenn sich der Cluster in der Liveproduktion befindet, müssen wir den parallelen Neustart bevorzugen, um den Ausfall zu minimieren. Während der Neuinstallation können wir die zweite Option "Clientkonfiguration erneut bereitstellen" auswählen und auf "Jetzt neu starten" klicken.

29. Sobald der Neustart erfolgreich abgeschlossen wurde, erhalten Sie den Status "Fertig". Klicken Sie auf "Fertigstellen", um den Vorgang abzuschließen.

30. Jetzt verbinden wir den Hiveserver2 mit dem Zookeeper Discovery-Modus. In der JDBC-Verbindung benötigen wir die Zeichenfolge, um die Zookeeper-Server mit der Portnummer 2081 zu verwenden. Sammeln Sie die Zookeeper-Server, indem Sie zu Cloudera Manager –> Zookeeper –> Instances –> wechseln (notieren Sie sich die Servernamen).

Dies sind die drei Server mit Zookeeper, 2181 ist die Portnummer.

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

31. Steigen Sie nun in luftiger Linie ein.

[tecmint@master1 ~]$ beeline

32. Geben Sie die JDBC-Verbindungszeichenfolge wie unten erwähnt ein. Erwähnen müssen der Service Discovery Mode und der Zookeeper Namespace. 'hiveserver2' ist der Standardnamespace von 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. Jetzt ist die Sitzung mit Hiveserver2 verbunden, der auf master1 ausgeführt wird. Führen Sie eine Beispielabfrage aus, um dies zu überprüfen. Verwenden Sie den folgenden Befehl, um eine Datenbank zu erstellen.

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

34. Verwenden Sie den folgenden Befehl, um die Datenbank aufzulisten.

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

35. Jetzt validieren wir die Hochverfügbarkeit im Zookeeper-Discovery-Modus. Gehen Sie zum Cloudera Manager und stoppen Sie den Hiveserver2 auf master1, den wir oben getestet haben.

Cloudera Manager –> Hive –> Instances –> (wählen Sie Hiveserver2 auf master1 aus) –> Aktion für ausgewählte –> Stopp.

36. Klicken Sie auf "Stopp". Sobald Sie gestoppt haben, erhalten Sie den Status "Fertig". Überprüfen Sie den Hiveserver2 auf master1, indem Sie zu Hive –> Instances navigieren.

37. Steigen Sie ein und verbinden Sie den Hiveserver2 mit derselben JDBC-Verbindungszeichenfolge mit dem Zookeeper Discovery Mode, wie wir es in den obigen Schritten getan haben.

[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"

Jetzt werden Sie mit Hiveserver2 verbunden, der auf master2 ausgeführt wird.

38. Überprüfen Sie mit einer Beispielabfrage.

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

Schlussfolgerung

In diesem Artikel haben wir die detaillierten Schritte durchlaufen, um das Hive Data Warehouse-Modell in unserem Cluster mit hoher Verfügbarkeit zu haben. In einer Echtzeit-Produktionsumgebung werden mehr als drei Hiveserver2 platziert, bei denen der Zookeeper-Ermittlungsmodus aktiviert ist.

Hier registrieren sich alle Hiveserver2 bei Zookeeper unter einem gemeinsamen Namespace. Zookeeper Erkennt dynamisch den verfügbaren Hiveserver2 und richtet die Hive-Sitzung ein.

Verwandte Artikel: