Проблемы подключения Jive к Hive при аутентификации Kerberos - R
Я пытаюсь подключить Hive через JDBC, используя пакет RJDBC в R. Hive настроен с проверкой подлинности Kerberos. Я использую CDH 5.6.0. Улей версия 1.1.0. я использую следующие банки
hive-jdbc-1.1.0-cdh5.6.0-standalone
hadoop-common-2.6.0-cdh5.6.0
мой код был
library(RJDBC)
drv <- JDBC("com.cloudera.hive.jdbc4.HS2Driver",list.files("Jars/",pattern="jar$",full.names=T))
url.dbc = paste0("jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/xx.xx.xx.xx@XXX.COM");
conn=dbConnect(drv,url.dbc,"username","password")
при выполнении этого кода я получаю следующую ошибку,
Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], :
java.sql.SQLException: [Cloudera][HiveJDBCDriver](500164) Error initialized or created transport for authentication: Peer indicated failure: Unsupported mechanism type PLAIN.
Я застрял здесь долгое время, Пожалуйста, помогите мне в этой ошибке
1 ответ
У меня есть доступ к кластеру с поддержкой Kerberos на моем рабочем месте. Я могу подключиться, используя следующий код..
Шаг 1: Загрузите последнюю версию драйвера JDBC от Cloudera. Я использовал 2.5.18 в Redhat 6 (x64)
Шаг 2: Распакуйте и используйте только API-интерфейс соединителя JDBC 4.
Шаг 3: выдать команду klist
в терминале [я надеюсь, что вы используете Linux, если нет, возможно, вам придется настроить активную директорию] и посмотреть, есть ли активная заявка. Если тикета нет, сгенерируйте его [возможно, с помощью администратора]
Шаг 4: Как только у вас будет активная заявка [посмотрите, как описано в Шаге 3], поместите все банки, распакованные на Шаге 2, в папку. [здесь в моем случае это в Drivers/Cloudera-Simba/JDBC4/
внутри моего каталога R-проекта]
Шаг 5: Одна важная вещь: если у вас есть Sentry, управляющий кластером Cloudera, убедитесь, что вы вошли в систему и запустили следующий код R от того пользователя, который имеет желаемый уровень доступа.
Шаг 6: Запустите следующий код R с соответствующим именем хоста и т. Д., Настроенным в URL JDBC.
drvH <- JDBC(driverClass = "com.cloudera.hive.jdbc4.HS2Driver",
classPath = normalizePath(list.files("Drivers/Cloudera-Simba/JDBC4/", pattern = ".jar$", full.names = T, recursive = T)),
identifier.quote="`")
connH <- dbConnect(drvH, "jdbc:hive2://master.rbi.org.in:10000;AuthMech=1;KrbRealm=YOUR_REALM.COM;KrbHostFQDN=master.rbi.org.in;KrbServiceName=hive")
# test it
dbGetQuery(connH, "show databases")
Надеюсь это поможет.
Вы можете найти больше информации о конфигурации Kerberos здесь.