Подключитесь к Impala с помощью Kerberos auth thrift.transport.TTransport.TTransportException: - PullRequest
0 голосов
/ 12 мая 2018

Я потратил много времени, пытаясь установить соединение с кераберизованным сервером impala через python. Это было возможно с Java JDBC. Я не думаю, что это проблема билета kereberos. Если я запускаю klist, я вижу свой билет без проблем.

Ticket cache: FILE:/tmp/krb5cc_4356
Default principal: xx@xx.xx.xx
Valid starting     Expires            Service principal
05/12/18 20:17:22  05/13/18 06:17:22  krbtgt/xx.xx.xx@xx.xx.xx
        renew until 05/19/18 20:17:22

Я использую свой собственный файл krb5.config и, как я уже говорил, я могу использовать его с Java, поэтому я не вижу, в чем здесь проблема. Моя строка подключения:

conn = connect(host='impala/_HOST@xx.xx.xx, port=21050, auth_mechanism='GSSAPI', user='xx', password='xx', database = 'xx', kerberos_service_name='impala')

У меня всегда одна и та же проблема:

File conexionsimple.py", line 18, in <module>     protocol=None)
  File dbapi.py", line 147, in connect  auth_mechanism=auth_mechanism)
  File hiveserver2.py", line 758, in connect  transport.open()
  File python2.7/site-packages/thrift_sasl/__init__.py", line 68, in open    self._trans.open()
  File /thrift/transport/TSocket.py", line 101, in open     message=message)
thrift.transport.TTransport.TTransportException: Could not connect to impala/_HOST@xx.xx.xx:21050

версия:

python 2.7.14
thrift 0.9.3
thrift-sasl 0.3
sasl 0.2
impyla 0.14

Я пытался с другой версией Thrift (0.2.1), но у меня была та же ошибка. Любое предложение?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Чтобы ответить на этот вопрос более полно, Kerberos делает Impyla более разборчивым, чем, например, Impala-Shell, поэтому параметр hostname должен быть полностью определенным доменным именем узла, на котором работает Impala, который зарегистрирован в Kerberos.

Например, мое имя службы impala - impala.somevalue.somedomain, это прекрасно работает с оболочкой impala И простым соединением Impyla с простым текстом. Он ломается только при использовании auth = GSSAPI. Чтобы исправить это, убедитесь, что хост является полным доменным именем.

например. моя fqdn для облачного провайдера - ip-xxx-xxx-xxx-xxx.somevalue.somedomain, где xxx - октеты IP-адреса.

0 голосов
/ 12 мая 2018

Хост должен быть просто именем хоста.Удалите часть до @ в вашем примере.

Также удалите пользователя и пароль.Kerberos использует билет Kerberos для аутентификации

...