使用 pyhive 和 kerberos 票证连接到 kerberized hadoop 集群



我想在我们的 kerberized Hadoop 集群上连接到 Hive,然后从机器上运行一些 hql 查询(显然是哈哈:)(,它已经有自己的 Kerberose 客户端并且可以工作,keytab 已经通过并测试了。

我们的Hadoop运行HWS 3.1和CentOS7,我的机器运行CentOS7 我使用的是Python 3.7.3和PyHive(0.6.1(。

我已经安装了一堆库(我也尝试卸载它们(,因为我正在浏览不同的论坛(HWS,Cloudera,这里所以......

我通过pip sasl库安装

  • 纯 SASL (0.6.1(
  • 皮萨斯尔 (0.4.1(
  • SASL (0.2.1(
  • 节俭 (0.3.0(

我通过百胜安装

  • 赛勒斯-萨斯尔-2.1.26-23.el7.x86_64
  • 赛勒斯-萨斯-lib-2.1.26-23.el7.x86_64
  • 赛勒斯-萨斯尔-平原-2.1.26-23.el7.x86_64
  • 包装机-0.16-5.el7.x86_64
  • 包装纸-0.16-5.el7.x86_64
  • 赛勒斯-萨斯尔-lib-2.1.26-23.el7.i686
  • 赛勒斯-萨斯尔-开发-2.1.26-23.el7.x86_64

下面是我与蜂巢的连接

return hive.Connection(host=self.host, port=self.port,
database=self.database, auth=self.__auth,
kerberos_service_name=self.__kerberos_service_name)

这是我的yaml的一部分

hive_interni_hdp: 
db_type: hive 
host: domain.xx.lan 
database: database_name 
user: user_name 
port: 10000 
auth: KERBEROS 
kerberos_service_name: hive

当我尝试运行代码时,出现以下错误。

File "/opt/Python3.7.3/lib/python3.7/site-packages/dfpy/location.py", line 1647, in conn
self.__conn = self._create_connection()
File "/opt/Python3.7.3/lib/python3.7/site-packages/dfpy/location.py", line 1633, in _create_connection
kerberos_service_name=self.__kerberos_service_name)
File "/opt/Python3.7.3/lib/python3.7/site-packages/pyhive/hive.py", line 192, in __init__
self._transport.open()
File "/opt/Python3.7.3/lib/python3.7/site-packages/thrift_sasl/__init__.py", line 79, in open
message=("Could not start SASL: %s" % self.sasl.getError()))
thrift.transport.TTransport.TTransportException: Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found'

有人运气好吗?障碍在哪里?Pyhive libs,错误的 Kerberos 连接设置?

我找到了一个解决方案,我查看了这个文档 https://www.cyrusimap.org/sasl/sasl/sysadmin.html

哪里提到了GSSAPI(使用我正在使用的Kerberos 5(,并且我已经检查过,我的机器上使用的gssapi不支持

sasl2-shared-mechlist

它说

GSS-SPNEGO,登录,普通,匿名

但是在安装 GSSAPI 库之后

yum install cyrus-sasl-gssapi

机甲状态

GSS-SPNEGO,GSSAPI,LOGIN,PLAIN,ANONYMOUS

比我再次运行代码和万岁!

附言不要忘记设置并验证您的密钥表是否有效

kinit -kt /root/user.keytab user@domain.com
klist

最新更新