#hadoop #hive
#hadoop #улей
Вопрос:
У меня есть действительная ключевая вкладка, и я заметил, что она выбрана для аутентификации, однако я не могу найти в какой-либо документации, какова цель передачи » principal=hive/hiveserver.test.com@TEST.COM » в URL-адресе JDBC
jdbc:hive2://hiveserver.test.com:10000/defau<principal=hive/hiveserver.test.com@TEST.COM
Я включил отладку и заметил, что принципал улья используется для создания бережливого транспорта после согласования SASL, а также для взаимодействия с hdfs . Что из этого верно?
Спасибо
Комментарии:
1. На жаргоне Kerberos
hive/somehost.somedomain@SOME.REALM
это «участник службы «, и драйвер JDBC будет использовать низкоуровневый клиент Kerberos, встроенный в Java, для получения «служебного билета» для этой конкретной службы.
Ответ №1:
Если вы настроили HiveServer2 на использование аутентификации Kerberos, HiveServer2 получает билет Kerberos во время запуска. Для HiveServer2 требуется файл principal и keytab, указанный в конфигурации. Клиентские приложения (например, JDBC или beeline) должны получить действительный билет Kerberos, прежде чем инициировать соединение с HiveServer2.
Включение проверки подлинности Kerberos для HiveServer2 Чтобы включить проверку подлинности Kerberos для HiveServer2, добавьте следующие свойства в /etc/hive/conf/hive-site.xml файл:
<property>
<name>hive.server2.authentication</name>
<value>KERBEROS</value>
</property>
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>hive/_HOST@YOUR-REALM.COM</value>
</property>
<property>
<name>hive.server2.authentication.kerberos.keytab</name>
<value>/etc/hive/conf/hive.keytab</value>
</property>
The _HOST@YOUR-REALM.COM value in the example above is the Kerberos principal for the host where HiveServer2 is running. The special string _HOST in the properties is replaced at run-time by the fully-qualified domain name of the host machine where the daemon is running. This requires that reverse DNS is properly working on all the hosts configured this way. Replace YOUR-REALM.COM with the name of the Kerberos realm your Hadoop cluster is in.
The /etc/hive/conf/hive.keytab value in the example above is a keytab file for that principal.
Note that HiveServer2 accesses the Hadoop cluster using the identity for this Kerberos user and does not impersonate the client user connecting to it (assuming impersonation has not been enabled).
Настройка клиентов JDBC для аутентификации Kerberos с помощью HiveServer2
Клиенты на основе JDBC должны включать principal= в строку подключения JDBC. Например:
String url = "jdbc:hive2://node1:10000/defau<principal=hive/HiveServer2Host@YOUR-REALM.COM"
Connection con = DriverManager.getConnection(url);
where HiveServer2Host is the host where HiveServer2 is running.