Ricerca nel sito web

Come installare e configurare Hive con disponibilità elevata – Parte 7


Hive è un modello di Data Warehouse nell'ecosistema Hadoop. Può funzionare come strumento ETL su Hadoop. L'abilitazione dell'alta disponibilità (HA) su Hive non è simile a quella dei servizi master come Namenode e Resource Manager.

Il failover automatico non verrà eseguito in Hive (Hiveserver2). Se qualsiasi Hiveserver2 (HS2) fallisce, l'esecuzione dei processi su quell'HS2 fallito avrà esito negativo. Dobbiamo inviare nuovamente il lavoro in modo che possa essere eseguito su un altro HiveServer2. Pertanto, abilitare HA su HS2 non è altro che aumentare il numero di componenti HS2 nel Cluster.

In questo articolo vedremo i passaggi per installare e abilitare l'Alta disponibilità di Hive.

Requisiti

  • Best practice per la distribuzione del server Hadoop su CentOS/RHEL 7 – Parte 1
  • Configurazione dei prerequisiti Hadoop e rafforzamento della sicurezza – Parte 2
  • Come installare e configurare Cloudera Manager su CentOS/RHEL 7 – Parte 3
  • Come installare CDH e configurare i posizionamenti dei servizi su CentOS/RHEL 7 - Parte 4
  • Come impostare l'alta disponibilità per Namenode – Parte 5
  • Come impostare l'alta disponibilità per Resource Manager – Parte 6

Iniziamo…

Installazione e configurazione di Hive

1. Accedi a Cloudera Manager all'URL seguente e vai a Cloudera Manager –> Aggiungi servizio .

http://13.233.129.39:7180/cmf/home

2. Seleziona il servizio "Hive".

3. Assegna i servizi sui nodi.

  • Gateway – È il servizio client da cui l'utente può accedere a Hive. Di solito, questo servizio verrà posizionato nei nodi Edge dedicati agli utenti.
  • Hive Metastore: è un repository centrale per l'archiviazione dei metadati Hive.
  • WebHCat Server: è un'API Web per HCatalog e altri servizi Hadoop.
  • Hiveserver2 – È un'interfaccia di client per l'esecuzione di query su Hive.

Una volta selezionati i server, fai clic su "Continua" per procedere.

4. Hive Metastore necessita di un database sottostante per l'archiviazione dei metadati. Qui utilizziamo il database PostgreSQL predefinito integrato in CDH.

I dettagli del database menzionato di seguito verranno inseriti automaticamente, "Test connessione" verrà saltato poiché il database menzionato verrà creato al volo. In tempo reale, dobbiamo creare il database nel database esterno e testare la connessione per procedere ulteriormente. Una volta terminato, fai clic su "Continua".

5. Configura la directory Hive Warehouse, /user/hive/warehouse è il percorso della directory predefinito per l'archiviazione delle tabelle Hive. Fai clic su "Continua".

6. L'installazione di Hive è avviata.

7. Una volta completata l'installazione, puoi ottenere lo stato "Finito". Fai clic su "Continua" per procedere ulteriormente.

8. L'installazione e la configurazione di Hive sono state completate correttamente. Fai clic su "Fine" per completare la procedura di installazione.

9. Puoi vedere il servizio Hive aggiunto in Cluster tramite Cloudera Manager Dashboard.

10. Puoi visualizzare Hiveserver2 in Istanze di Hive. Abbiamo aggiunto Hiveserver2 in master1.

Cloudera Manager –> Hive –> Istanze –> Hiveserver2.

Abilitazione dell'alta disponibilità su Hive

11. Successivamente aggiungi il ruolo Hive andando su Cloudera Manager –> Hive –> Azioni –> Aggiungi istanze del ruolo.

12. Seleziona i server in cui desideri posizionare Hiveserver2 aggiuntivo. Puoi aggiungerne più di due, non c'è limite. Qui ne stiamo aggiungendo uno extra Hiveserver2 in master2.

13. Una volta selezionato il server, fai clic su "Continua".

14. Un Hiverserver2 verrà aggiunto alle istanze Hive, devi avviarlo andando su Cloudera Manager –> Hive –> Istanze –> (Seleziona Hiveserver2 aggiunto di recente) –> Azione per selezionato –> Inizia.

15. Una volta avviato Hiveserver2 su master2, otterrai lo stato "Finito". Fai clic su Chiudi.

16. Puoi vedere che entrambi gli Hiveserver2 sono in esecuzione.

Verifica della disponibilità dell'alveare

Possiamo connettere Hiveserver2 tramite beeline che è un thin client e una riga di comando. Utilizza il driver JDBC per stabilire la connessione.

17. Accedi al server su cui è in esecuzione Hive Gateway.

[tecmint@master1 ~]$ beeline

18. Inserisci la stringa di connessione JDBC per connettere Hiveserver2. A questo proposito con la stringa citiamo Hiverserver2 (master2) con il suo numero di porta predefinito 10000. Questa stringa di connessione si collegherà solo a Hiveserver2 in esecuzione su master2.

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

19. Esegui una query di esempio.

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

Questo è il database predefinito integrato.

20. Utilizza il comando seguente per terminare la sessione Hive.

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

21. Puoi utilizzare lo stesso modo per connettere Hiveserver2 in esecuzione su master2.

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

23. Possiamo connettere Hiveserver2 in modalità Zookeeper Discovery. In questo metodo, non abbiamo bisogno di menzionare Hiveserver2 nella stringa di connessione, utilizziamo invece Zookeeper per scoprire Hiveserver2 disponibile.

Qui possiamo utilizzare un bilanciatore del carico di terze parti per bilanciare il carico tra gli Hiverserver2 disponibili. La configurazione seguente è necessaria per abilitare la modalità Zookeeper Discovery accedendo a Cloudera Manager –> Hive –> Configurazione.

24. Successivamente, cerca la proprietà "Snippet di configurazione avanzata HiveServer2" e fai clic sul simbolo + per aggiungere la proprietà seguente.

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

25. Una volta entrati nella proprietà, fai clic su "Salva modifiche".

26. Poiché abbiamo apportato modifiche alla configurazione, è necessario riavviare i servizi interessati facendo clic sul simbolo del colore arancione per riavviare i servizi.

27. Fai clic sui servizi "Riavvia obsoleti".

28. Sono disponibili due opzioni. Se il cluster è in produzione live, dobbiamo preferire il riavvio in sequenza per ridurre al minimo l'interruzione. Durante la nuova installazione, possiamo scegliere la seconda opzione "Ridistribuisci configurazione client" e fare clic su "Riavvia ora".

29. Una volta completato con successo il riavvio, riceverai lo stato "Finito". Fai clic su "Fine" per completare il processo.

30. Ora collegheremo Hiveserver2 utilizzando la modalità Zookeeper Discovery. Nella connessione JDBC, la stringa di cui abbiamo bisogno per utilizzare i server Zookeeper con il suo numero di porta 2081. Raccogli i server Zookeeper andando su Cloudera Manager –> Zookeeper –> Istanze –> (annota i nomi dei server).

Questi sono i tre server che hanno Zookeeper, 2181 è il numero di porta.

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

31. Adesso mettiti in linea.

[tecmint@master1 ~]$ beeline

32. Inserisci la stringa di connessione JDBC come indicato di seguito. Dobbiamo menzionare la Service Discovery Mode e lo Zookeeper Namespace. "hiveserver2" è lo spazio dei nomi predefinito di 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. Ora la sessione è connessa a Hiveserver2 in esecuzione su master1. Eseguire una query di esempio per convalidare. Utilizzare il comando seguente per creare un database.

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

34. Utilizza il comando seguente per elencare il database.

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

35. Ora convalideremo l'alta disponibilità nella modalità di scoperta Zookeeper. Vai su Cloudera Manager e ferma Hiveserver2 su master1 che abbiamo testato sopra.

Cloudera Manager –> Hive –> Istanze –> (seleziona Hiveserver2 su master1 ) –> Azione per selezionato –> Interrompi.

36. Fai clic su "Stop". Una volta interrotto, riceverai lo stato "Finito". Verifica Hiveserver2 su master1 accedendo a Hive –> Istanze.

37. Entra nella linea e connetti Hiveserver2 utilizzando la stessa stringa di connessione JDBC con Zookeeper Discovery Modalità come abbiamo fatto nei passaggi precedenti.

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

Ora sarai connesso a Hiveserver2 in esecuzione su master2.

38. Convalida con una query di esempio.

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

Conclusione

In questo articolo, abbiamo seguito i passaggi dettagliati per avere il modello Hive Data Warehouse nel nostro Cluster con Alta disponibilità. In un ambiente di produzione in tempo reale, verranno posizionati più di tre Hiveserver2 con la modalità di rilevamento Zookeeper abilitata.

Qui, tutti gli Hiveserver2 si registrano con Zookeeper sotto uno Namespace comune. Zookeeper dinamicamente scopre l'Hiveserver2 disponibile e stabilisce la sessione Hive.