Hive аутентификация LDAP для JDBC и HCatalog

У меня есть приложение Java/ Groovy для работы с Hive над ldap (активный каталог). В этом приложении есть два способа работы с Hive: jdbc и hcatalog (HCatWriter, HCatReader). Я могу получить соединение JDBC (org.apache.hive.jdbc.HiveConnection) на компьютере, не входящем в домен AD. Тем не менее, я получаю сообщение об ошибке "отказано в соединении" на этом компьютере, но приложение прекрасно работает на компьютере из домена AD. Код, который я использую для аутентификации, следующий:

PasswdAuthenticationProvider authProvider = new LdapAuthenticationProviderImpl(hiveConf)
authProvider.Authenticate("loom", "password")

Почему я не могу использовать интерфейс hcatalog для работы с Hive, защищенным ldap(AD) с компьютера исключен из домена AD? Почему интерфейс jdbc может? Есть ли способ выполнять операции Hive (например, запись записей в определенную таблицу) с компьютера вне домена AD?


Я отладил приложение и обнаружил, что "соединение отказано" происходит для подключения к серверу AD (из hive.server2.authentication.ldap.url параметр HiveConf). Существует трассировка стека исключения:

javax.security.sasl.AuthenticationException: LDAP Authentication failed for user
        at org.apache.hive.service.auth.LdapAuthenticationProviderImpl.Authenticate(LdapAuthenticationProviderImpl.java:184)
        at my.some.package.HiveTest.hcatalog(ConnectionToHiveTest.groovy:193)
Caused by: javax.naming.CommunicationException: activedirectory-server.local:389
        at com.sun.jndi.ldap.Connection.<init>(Connection.java:226)
        at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:137)
        at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1615)
        at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2749)
        at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
        at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
        at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
        at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
        at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
        at javax.naming.InitialContext.init(InitialContext.java:244)
        at javax.naming.InitialContext.<init>(InitialContext.java:216)
        at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
        at org.apache.hive.service.auth.LdapAuthenticationProviderImpl.Authenticate(LdapAuthenticationProviderImpl.java:176)
        ... 1 common frames omitted
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at java.net.Socket.connect(Socket.java:538)
        at java.net.Socket.<init>(Socket.java:434)
        at java.net.Socket.<init>(Socket.java:211)
        at com.sun.jndi.ldap.Connection.createSocket(Connection.java:363)
        at com.sun.jndi.ldap.Connection.<init>(Connection.java:203)
        ... 15 common frames omitted

0 ответов

Другие вопросы по тегам