Аутентификация соединения Impala JDB C в среде Kerberized - PullRequest
0 голосов
/ 04 марта 2020

При попытке запустить действие Java в Ooz ie (CDH6.3.1) я получаю GSS initiate failed. Рассматриваемый код довольно прост:

        String impalaUrl = "jdbc:impala://pxyserver.global.ad:21050/default;SSL=1;AuthMech=1;KrbRealm=GLOBAL.AD;KrbHostFQDN=pxyserver.global.ad;KrbServiceName=Impala;sslTrustStore=/opt/cloudera/security/jks/truststore.jks;trustStorePassword=password";
        Properties impalaProperties = new Properties();
        impalaProperties.put("user", "svcaccount");
        impalaProperties.put("password", "svcpassword");
        impalaProperties.put("Driver", "com.cloudera.impala.jdbc41.Driver");

        try {
            setConnection(DriverManager.getConnection(impalaUrl , impalaProperties));
        } catch (SQLException e) {
            e.printStackTrace();
        }


Выполнение этого дает следующую трассировку стека:

java.sql.SQLException: [Cloudera][ImpalaJDBCDriver](500164) Error initialized or created transport for authentication: [Cloudera][ImpalaJDBCDriver](500169) Unable to connect to server: GSS initiate failed.
    at com.cloudera.impala.hivecommon.api.HiveServer2ClientFactory.createTransport(Unknown Source)
    at com.cloudera.impala.hivecommon.api.ServiceDiscoveryFactory.createClient(Unknown Source)
    at com.cloudera.impala.hivecommon.core.HiveJDBCCommonConnection.establishConnection(Unknown Source)
    at com.cloudera.impala.impala.core.ImpalaJDBCDSIConnection.establishConnection(Unknown Source)
    at com.cloudera.impala.jdbc.core.LoginTimeoutConnection.connect(Unknown Source)
    at com.cloudera.impala.jdbc.common.BaseConnectionFactory.doConnect(Unknown Source)
    at com.cloudera.impala.jdbc.common.AbstractDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)

Я могу исправить это, kinit используя keytab. Однако в нашей производственной среде Ooz ie выполняет это на одном из многих рабочих узлов, и у них нет действительных билетов Kerberos. Какие у меня есть варианты? Если возможно, я бы предпочел не kinit каждый день на каждом из наших 40 рабочих узлов, есть ли здесь параметр, который мне не хватает?

Спасибо

...