Website-Suche

So installieren und konfigurieren Sie Hive mit hoher Verfügbarkeit – Teil 7


Hive ist ein Data Warehouse-Modell im Hadoop-Ökosystem. Es kann als ETL-Tool zusätzlich zu Hadoop eingesetzt werden. Die Aktivierung von Hochverfügbarkeit (HA) auf Hive ist nicht mit der Aktivierung von Master-Diensten wie Namenode und Resource Manager vergleichbar.

In Hive (Hiveserver2) findet kein automatisches Failover statt. Wenn ein Hiveserver2 (HS2) ausfällt, schlägt die Ausführung von Jobs auf diesem ausgefallenen HS2 fehl. Wir müssen den Job erneut übermitteln, damit er auf anderen HiveServer2 ausgeführt werden kann. Die Aktivierung von HA auf HS2 bedeutet also nichts anderes als die Erhöhung der Anzahl der HS2-Komponenten im Cluster.

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

Anforderungen

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

Lass uns anfangen…

Hive-Installation und -Konfiguration

1. Melden Sie sich unter der folgenden URL bei Cloudera Manager an und navigieren Sie zu Cloudera Manager –> Dienst hinzufügen .

http://13.233.129.39:7180/cmf/home

2. Wählen Sie den Dienst „Hive“ aus.

3. Weisen Sie die Dienste den Knoten zu.

  • Gateway – Hierbei handelt es sich um den Client-Dienst, über den der Benutzer auf den Hive zugreifen kann. Normalerweise wird dieser Dienst in Edge-Knoten platziert, die den Benutzern vorbehalten sind.
  • Hive Metastore – Es handelt sich um 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 zur Abfrageausführung auf Hive.

Sobald Sie die Server ausgewählt haben, klicken Sie auf „Weiter“, um fortzufahren.

4. Hive Metastore benötigt eine zugrunde liegende Datenbank zum Speichern von Metadaten. Hier verwenden wir die standardmäßige PostgreSQL-Datenbank, die mit CDH integriert ist.

Die unten genannten Datenbankdetails werden automatisch eingegeben. „Verbindung testen“ wird übersprungen, da die genannte Datenbank im Handumdrehen 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. Hive-Installation und -Konfiguration erfolgreich abgeschlossen. Klicken Sie auf „Fertig stellen“, um den Installationsvorgang abzuschließen.

9. Sie können den in Cluster hinzugefügten Hive-Dienst ü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.

Ermöglichen von Hochverfügbarkeit auf Hive

11. Als nächstes fügen Sie die Hive-Rolle hinzu, indem Sie zu Cloudera Manager –> Hive –> Aktionen –> gehen Rolleninstanzen hinzufügen.

12. Wählen Sie die Server aus, auf denen Sie zusätzliche 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. Sobald 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 gehen –> Hive –> Instanzen –> (Select Hiveserver2 neu hinzugefügt) –> Aktion für Ausgewählte –> <Start.

15. Sobald Hiveserver2 auf master2 gestartet ist, erhalten Sie den Status „Fertig“. Klicken Sie auf Schließen.

16. Sie können sehen, dass beide Hiveserver2 ausgeführt werden.

Überprüfen der Hive-Verfügbarkeit

Wir können den Hiveserver2 über die Beeline verbinden, die ein Thin Client und eine Befehlszeile ist. Für den Verbindungsaufbau wird der JDBC-Treiber verwendet.

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 erwähnen wir als String den Hiverserver2 (master2) mit seiner Standard-Portnummer 10000. Diese Verbindungszeichenfolge stellt nur eine Verbindung zum 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 standardmäßig integrierte Datenbank.

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

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

21. Auf die gleiche Weise können Sie Hiveserver2 verbinden, der auf master2 läuft.

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 die verfügbaren Hiverserver2 zu verteilen. Die folgende Konfiguration ist erforderlich, um den Zookeeper Discovery Mode zu aktivieren, indem Sie zu Cloudera Manager –> Hive –> Konfiguration gehen.

24. Suchen Sie als Nächstes nach der 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 Immobilie betreten 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 Live-Produktion befindet, müssen wir den rollierenden Neustart bevorzugen, um den Ausfall zu minimieren. Während wir neu installieren, können wir die zweite Option „Client-Konfiguration erneut bereitstellen“ wählen und auf „Jetzt neu starten“ klicken.

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

30. Jetzt verbinden wir den Hiveserver2 im Zookeeper Discovery-Modus. In der JDBC-Verbindung die Zeichenfolge, die wir zur Verwendung der Zookeeper-Server mit der Portnummer 2081 benötigen. Sammeln Sie die Zookeeper-Server, indem Sie zu Cloudera Manager –> Zookeeper –> Instances –> gehen (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. Jetzt begeben Sie sich auf beeline.

[tecmint@master1 ~]$ beeline

32. Geben Sie die JDBC-Verbindungszeichenfolge wie unten beschrieben ein. Wir müssen den Service Discovery Mode und den Zookeeper Namespace erwähnen. „hiveserver2“ ist der Standard-Namespace 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 läuft. Führen Sie zur Validierung eine Beispielabfrage aus. 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 Mode. Gehen Sie zu Cloudera Manager und stoppen Sie den Hiveserver2 auf master1, den wir oben getestet haben.

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

36. Klicken Sie auf „Stopp“. Nach dem Stoppen erhalten Sie den Status „Fertig“. Überprüfen Sie den Hiveserver2 auf master1, indem Sie zu Hive –> Instanzen navigieren.

37. Steigen Sie in die Beeline ein und verbinden Sie den Hiveserver2 mithilfe derselben JDBC-Verbindungszeichenfolge mit Zookeeper Discovery Modus, 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 läuft.

38. Validieren Sie mit einer Beispielabfrage.

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

Abschluss

In diesem Artikel sind wir die detaillierten Schritte durchgegangen, um das Hive Data Warehouse-Modell in unserem Cluster mit Hochverfügbarkeit zu haben. In einer Echtzeit-Produktionsumgebung werden mehr als drei Hiveserver2 mit aktiviertem Zookeeper Discovery Mode platziert.

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