una para interfaz hacer grafica datos conectar con como hadoop jdbc hive kerberos

hadoop - grafica - como hacer una interfaz para una base de datos en java



Conéctese a la colmena kerberizada usando jdbc desde el sistema de ventanas remoto (2)

Configuré un entorno de sección con la seguridad de Kerberos habilitada en un servidor Linux (Red Hat). Y necesito conectarme desde una máquina remota de Windows a una colmena usando JDBC.

Entonces, tengo hiveserver2 ejecutándose en la máquina linux, y he hecho "kinit".

Ahora trato de conectarme desde un programa Java en el lado de Windows con un programa de prueba como este,

Class.forName("org.apache.hive.jdbc.HiveDriver"); String url = "jdbc:hive2://<host>:10000/default;principal=hive/_HOST@<YOUR-REALM.COM>" Connection con = DriverManager.getConnection(url);

Y obtuve el siguiente error,

Exception due to: Could not open client transport with JDBC Uri: jdbc:hive2://<host>:10000/;principal=hive/[email protected]>: GSS initiate failed

¿Qué estoy haciendo aquí mal? Revisé muchos foros, pero no pude encontrar una solución adecuada. Cualquier respuesta será apreciada.

Gracias


La clave para nosotros cuando nos encontramos con el problema fue la siguiente:

En su servidor hay ciertos principales kerberos enumerados que pueden operar en los datos.

Cuando intentamos ejecutar una consulta a través de JDBC, no hicimos el kinit adecuado en el lado del cliente.

En este caso, la solución es obvia:

En el cliente de windows: haga un kinit con la cuenta correcta antes de conectarse


Si estuviera ejecutando su código en Linux, simplemente señalaría esa publicación , es decir, debe usar las propiedades del sistema para definir la configuración de Kerberos y JAAS , desde archivos conf con formatos específicos.
Y debe cambiar los indicadores de seguimiento de depuración para comprender el problema de configuración sutil (es decir, los diferentes sabores / versiones de JVM pueden tener diferentes requisitos de sintaxis, que no están documentados, es un proceso de prueba y error).

Pero en Windows hay problemas adicionales:

  1. el controlador JDBC de Apache Hive tiene algunas dependencias en los archivos JAR de Hadoop, especialmente cuando Kerberos está involucrado (ver esa publicación para más detalles)
  2. estos archivos JAR de Hadoop requieren "bibliotecas nativas", es decir, un puerto de Windows de Hadoop (que usted debe compilar o descargar de una fuente insegura en la web) , más las propiedades del sistema hadoop.home.dir y java.library.path apunta al directorio de inicio de Hadoop y su subdirectorio bin respectivamente

Además de eso, el controlador de Apache Hive tiene problemas de compatibilidad: cada vez que hay cambios en el protocolo de conexión, los clientes más nuevos no pueden conectarse a servidores más antiguos.

Por lo tanto, le recomiendo encarecidamente que utilice el controlador Cloudera JDBC para Hive para sus clientes de Windows . El sitio de Cloudera simplemente le pregunta su correo electrónico.
Luego tendrá un manual en PDF de más de 80 páginas para leer, los JAR para agregar a su CLASSPATH y su URL de JDBC para adaptarse de acuerdo con el manual.
Nota al margen: el controlador Cloudera es un controlador compatible con JDBC-4.x adecuado, no es necesario para ese legado Class.forName() ...