Integraciones
Breadcrumbs

JDBC Genérico - Hive

Hive standalone

Soporte

Soporte con hive 2.3.9.

Configuración

Vendor

HIVE_APACHE

Formato de la conexión

El formato de la url de conexión directo a hive server es jdbc:hive2://<databse_host>:<database_port>/<database>;principal=<principal>;ssl=true.

El formato de la url de conexión por HTTP es jdbc:hive2://<databse_host>:<database_port>/<database>;principal=<principal>;ssl=true;transportMode=http;httpPath=cliservice.

Permisos

Usuario o rol con permisos SELECT sobre las tablas o vistas que se quieran obtener un muestreo de datos o extracción de metadata.


Hive en entorno Cloudera

Soporte

Soporte en entornos cdh desde 6.0 a 6.3 o cdp 7.0 y 7.1 con hive 1.0 hasta 3.1.

Configuración

Vendor

HIVE_CLOUDERA

Formato de la conexión

El formato de la url de conexión directo a hive server es jdbc:hive2://<databse_host>:<database_port>/<database>;principal=<principal>;ssl=true.

El formato de la url de conexión por HTTP es jdbc:hive2://<databse_host>:<database_port>/<database>;principal=<principal>;ssl=true;transportMode=http;httpPath=cliservice.

El formato de la url de conexión por zookeeper es jdbc:hive2://<databse_host>:<database_port>/<database>;principal=<principal>;ssl=true;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2.

Permisos

Usuario o rol con permisos SELECT sobre las tablas o vistas que se quieran obtener un muestreo de datos o extracción de metadata.


Ajustes específicos para Hive

Para la ejecución de consultas JDBC contra Hive se tienen que realizar una serie de ajustes en la JVM

  • Uso de autorización Kerberos

  • SSL

Ajustes SSL de la JVM

Cloudera necesita securizar las conexiones con SSL para poder utilizar Kerberos. La solución que utiliza por defecto es desplegar su propia CA autofirmada en un contenedor JKS utilizando unas propiedades análogas a estas:

Bash
-Djavax.net.ssl.keyStore=/....../....../cm-auto-host_keystore.jks
-Djavax.net.ssl.keyStoreType=jks -Djavax.net.ssl.trustStore=/....../...../cm-auto-global_truststore.jks
-Djavax.net.ssl.trustStoreType=jks

Hay dos opciones

  • Que las rutas sean proporcionadas al integrador por el Cliente

  • Añadir la CA autofirmada de Cloudera al contenedor de certificados por defecto de la JVM

Rutas proporcionadas

La JVM del plugin se deberá ejecutar con los siguientes parámetros:

Parámetro

Valor

-Djavax.net.ssl.keyStore

Ruta donde se encuentra el almacén de claves privadas.

-Djavax.net.ssl.keyStoreType

jks

-Djavax.net.ssl.trustStore

Ruta donde se encuentra el almacén de certificados.

-Djavax.net.ssl.trustStoreType

jks


Añadir la CA autofirmada al contenedor de certificados de la JVM

Lo que se persigue es añadir en cacerts de Java el certificado autofirmado de Cloudera

keytool -importkeystore -srckeystore /var/lib/cloudera-scm-agent/agent-cert/cm-auto-global_truststore.jks  -destkeystore /etc/ssl/certs/java/cacerts -srcstorepass -deststorepass changeit -v

Este sistema tiene la ventaja de que no precisaría añadir parámetros adicionales a la JVM.

Ajustes Kerberos de la JVM

Se necesita proporcionar a la JVM el mecanismo para la utilización automática de los tickets de Kerberos.

Para ello debemos lanzar la JVM con los siguientes parámetros.

  • -Djava.security.auth.login.config=security.config

  • -Djavax.security.auth.useSubjectCredsOnly=false

Teniendo el fichero security.config la siguiente estructura:

com.sun.security.jgss.initiate {
   com.sun.security.auth.module.Krb5LoginModule required
   useTicketCache=true
   StoreKey=true
   useKeyTab=true
   keyTab="/home/ubuntu/usr_anjana.keytab"
   principal="usr_anjana@CDP.LOCAL";
};

Los parámetros keytab y principal se nos han de suministrar

Errores comunes

Si las tablas de Hive están encriptadas devuelve este log de error

No Route to Host from ip-10-202-21-147.eu-west-1.compute.internal/10.202.21.147 to ip-10-202-21-122.eu-west-1.compute.internal:8020 failed on socket timeout exception: java.net.NoRouteToHostException