Cómo instalar y configurar Hive con alta disponibilidad - Parte 7


Hive es un modelo de almacén de datos en Hadoop Eco-System. Puede funcionar como una herramienta ETL sobre Hadoop. Habilitar la alta disponibilidad (HA) en Hive no es similar a como lo hacemos en Master Services como Namenode y Resource Manager.

La conmutación por error automática no se producirá en Hive (Hiveserver2). Si falla algún servidor Hive2 (HS2), la ejecución de trabajos en ese HS2 fallido fallará. Necesitamos volver a enviar el trabajo para que pueda ejecutarse en otro HiveServer2. Entonces, habilitar HA en HS2 no es más que aumentar el número de componentes de HS2 en Cluster.

En este artículo, veremos los pasos para instalar y habilitar la alta disponibilidad de Hive.

Empecemos…

Instalación y configuración de Hive

1. Inicie sesión en Cloudera Manager en la siguiente URL y navegue hasta Cloudera Manager -> Agregar servicio.

http://13.233.129.39:7180/cmf/home

2. Seleccione el servicio "Hive".

3. Asignar los servicios en los nodos.

  • Gateway – It is the client service where the user can access the Hive. Usually, this service will be placed in Edge nodes dedicated to the users.
  • Hive Metastore – It is a central repository for storing Hive Metadata.
  • WebHCat Server – It is a Web API for HCatalog and other Hadoop Services.
  • Hiveserver2 – It is an interface of clients for query execution on Hive.

Una vez seleccionados los servidores, haga clic en "Continuar" para continuar.

4. Hive Metastore necesita una base de datos subyacente para almacenar metadatos. Aquí estamos usando la base de datos PostgreSQL predeterminada que está incorporada con CDH.

Los detalles de la base de datos que se mencionan a continuación se ingresarán automáticamente, se omitirá "Conexión de prueba" ya que la base de datos mencionada se creará sobre la marcha. En tiempo real, necesitamos crear la base de datos en la base de datos externa y probar la conexión para continuar. Una vez hecho esto, haga clic en "Continuar".

5. Configure el directorio de Hive Warehouse,/user/hive/warehouse es la ruta de directorio predeterminada para almacenar tablas de Hive. Haga clic en "Continuar".

6. Se inicia la instalación de Hive.

7. Una vez completada la instalación, puede obtener el estado "Finalizado". Haga clic en "Continuar" para continuar.

8. La instalación y configuración de Hive se completó correctamente. Haga clic en "Finalizar" para completar el procedimiento de instalación.

9. Puede ver el servicio Hive agregado en Cluster a través del Panel de Cloudera Manager.

10. Puede ver Hiveserver2 en Instancias de Hive. Hemos agregado Hiveserver2 en master1.

Administrador de Cloudera -> Hive -> Instancias -> Hiveserver2.

Habilitación de la alta disponibilidad en Hive

11. A continuación, agregue el rol de Hive yendo a Cloudera Manager -> Hive -> Acciones -> Agregar instancias de rol.

12. Seleccione los servidores donde desea colocar Hiveserver2 adicional. Puede agregar más de dos, no hay límite. Aquí estamos agregando un Hiveserver2 adicional en master2.

13. Una vez seleccionado el servidor, haga clic en "Continuar".

14. Se agregará un Hiverserver2 a las Instancias de Hive, debe iniciarlo yendo a Cloudera Manager -> Hive -> Instances -> (Seleccione Hiveserver2 agregado recientemente) -> Action for Selected -> Start.

15. Una vez que Hiveserver2 se haya iniciado en master2, obtendrá el estado "Finalizado". Haga clic en Cerrar.

16. Puede ver que ambos Hiveserver2 se están ejecutando.

Verificación de la disponibilidad de Hive

Podemos conectar Hiveserver2 a través de beeline, que es un cliente ligero y una línea de comandos. Utiliza el controlador JDBC para establecer la conexión.

17. Inicie sesión en el servidor donde se ejecuta Hive Gateway.

[[email protected] ~]$ beeline

18. Introduzca la cadena de conexión JDBC para conectar Hiveserver2. En este sentido, la cadena que estamos mencionando es el Hiverserver2 (master2) con su número de puerto predeterminado 10000. Esta cadena de conexión solo se conectará al Hiveserver2 que se ejecuta en master2.

beeline> !connect "jdbc:hive2://master1.tecmint.com:10000"

19. Ejecute una consulta de muestra.

0: jdbc:hive2://master1.tecmint.com:10000> show databases;

Esta es la base de datos predeterminada que viene incorporada.

20. Utilice el siguiente comando para finalizar la sesión de Hive.

0: jdbc:hive2://master1.tecmint.com:10000> !quit

21. Puede utilizar la misma forma para conectar Hiveserver2 que se ejecuta en master2.

beeline> !connect "jdbc:hive2://master2.tecmint.com:10000"

23. Podemos conectar el Hiveserver2 en el modo Zookeeper Discovery. En este método, no necesitamos mencionar el Hiveserver2 en la cadena de conexión, sino que estamos usando Zookeeper para descubrir el Hiveserver2 disponible.

Aquí podemos utilizar un equilibrador de carga de terceros para equilibrar la carga entre los Hiverserver2 disponibles. La siguiente configuración es necesaria para habilitar el modo de descubrimiento de Zookeeper yendo a Cloudera Manager -> Hive -> Configuración.

24. A continuación, busque la propiedad “Fragmento de configuración avanzada de HiveServer2” y haga clic en el símbolo + para agregar la siguiente propiedad.

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

25. Una vez ingresada la propiedad, haga clic en "Guardar cambios".

26. A medida que realizamos cambios en la configuración, es necesario reiniciar los servicios afectados haciendo clic en el símbolo de color naranja para reiniciar los servicios.

27. Haga clic en "Reiniciar servicios obsoletos".

28. Hay dos opciones disponibles. Si el clúster está en producción en vivo, debemos preferir el reinicio continuo para minimizar la interrupción. Como estamos instalando recientemente, podemos elegir la segunda opción "Volver a implementar la configuración del cliente" y hacer clic en "Reiniciar ahora".

29. Una vez que el reinicio se haya completado correctamente, obtendrá el estado "Finalizado". Haga clic en "Finalizar" para completar el proceso.

30. Ahora conectaremos Hiveserver2 usando el modo Zookeeper Discovery. En la conexión JDBC, la cadena que necesitamos para usar los servidores de Zookeeper con su número de puerto 2081. Recoja los servidores de Zookeeper yendo a Cloudera Manager -> Zookeeper -> Instancias -> (Anote los nombres de los servidores).

Estos son los tres servidores que tienen Zookeeper, 2181 es el número de puerto.

master1.tecmint.com:2181
master2.tecmint.com:2181
worker1.tecmint.com:2181

31. Ahora entra en línea recta.

[[email protected] ~]$ beeline

32. Ingrese la cadena de conexión JDBC como se menciona a continuación. Tenemos que mencionar el modo de descubrimiento de servicios y el espacio de nombres de Zookeeper. "Hiveserver2" es el espacio de nombres predeterminado de Hiveserver2.

beeline>!connect "jdbc:hive2://master1.tecmint.com:2181,master2.tecmint.com:2181,worker1.tecmint.com:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. Ahora la sesión está conectada a Hiveserver2 que se ejecuta en master1. Ejecute una consulta de muestra para validar. Utilice el siguiente comando para crear una base de datos.

0: jdbc:hive2://master1.tecmint.com:2181,mast> create database tecmint;

34. Utilice el siguiente comando para listar la base de datos.

0: jdbc:hive2://master1.tecmint.com:2181,mast> show databases;

35. Ahora validaremos la alta disponibilidad en el modo de descubrimiento de Zookeeper. Vaya a Cloudera Manager y detenga Hiveserver2 en master1 que hemos probado anteriormente.

Cloudera Manager -> Hive -> Instances -> (seleccione Hiveserver2 en master1) -> Action for selected -> Stop.

36. Haga clic en "Detener". Una vez detenido, obtendrá el estado "Finalizado". Verifique Hiveserver2 en master1 navegando a Hive -> Instances.

37. Acceda a la línea recta y conecte el Hiveserver2 usando la misma cadena de conexión JDBC con el modo de descubrimiento de Zookeeper como lo hicimos en los pasos anteriores.

[[email protected] ~]$ beeline

beeline>!connect "jdbc:hive2://master1.tecmint.com:2181,master2.tecmint.com:2181,worker1.tecmint.com:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

Ahora estará conectado a Hiveserver2 ejecutándose en master2.

38. Valide con una consulta de muestra.

0: jdbc:hive2://master1.tecmint.com:2181,mast> show databases;

En este artículo, hemos seguido los pasos detallados para tener el modelo de almacén de datos de Hive en nuestro clúster con alta disponibilidad. En un entorno de producción en tiempo real, se colocarán más de tres Hiveserver2 con el modo de descubrimiento de Zookeeper habilitado.

Aquí, todos los Hiveserver2 se registran con Zookeeper en un espacio de nombres común. Zookeeper descubre dinámicamente el Hiveserver2 disponible y establece la sesión de Hive.