使用kerberos auth-thrift.transport.ttTransport.ttTransportException连接到impala:

67up9zun  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(432)

我花了很多时间试图通过python与kereberized impala服务器建立连接。使用javajdbc是可能的。我不认为这是一个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

我尝试了其他的节俭版本(0.2.1),但我有同样的错误。有什么建议吗?

xv8emn3q

xv8emn3q1#

为了更全面地回答这个问题,kerberos使impyla比impala shell更挑剔,因此hostname参数必须是运行impala的节点的完全限定域名,该节点使用kerberos注册。
例如,我的impala服务名是impala.somevalue.somedomain,这在impala shell和纯文本impyla连接中运行良好。只有在使用auth=gssapi时才会中断。要修复它,请确保主机是fqdn。
e、 g.我在云提供商上的fqdn是ip----.somevalue.somedomain,其中是ip地址八位字节。

3xiyfsfu

3xiyfsfu2#

主机应该只是主机名。在您的示例中,删除最多为@的部分。
同时删除用户和密码。kerberos使用kerberos票证进行身份验证

相关问题