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:
-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