使用带有 kerberos 票证的 pyhive 连接到 kerberized hadoop 集群
Using pyhive with kerberos ticket to connect to kerberized hadoop cluster
我想连接到我们的 kerberized Hadoop 集群上的 Hive,然后 运行 来自机器的一些 hql 查询(显然哈哈 :)),它已经有自己的 Kerberose 客户端并且可以工作,keytab 已经通过和测试。
我们的 Hadoop 运行s HWS 3.1 和 CentOS7,我的机器也是 运行s CentOS7
我正在使用 Python 3.7.3 和 PyHive (0.6.1)。
我安装了一堆库(我也尝试卸载它们),因为我浏览了不同的论坛(HWS、Cloudera,这里是 SO...)
我通过 pip sasl 库安装
- 纯 sasl (0.6.1)
- pysasl (0.4.1)
- sasl (0.2.1)
- 节俭-sasl (0.3.0)
我是通过yum安装的
- cyrus-sasl-2.1.26-23.el7.x86_64
- cyrus-sasl-lib-2.1.26-23.el7.x86_64
- cyrus-sasl-plain-2.1.26-23.el7.x86_64
- saslwrapper-devel-0.16-5.el7.x86_64
- saslwrapper-0.16-5.el7.x86_64
- cyrus-sasl-lib-2.1.26-23.el7.i686
- cyrus-sasl-devel-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 库,Kerberos 连接设置错误?
我找到了解决方案,我查看了这个文档https://www.cyrusimap.org/sasl/sasl/sysadmin.html
哪里提到了 GSSAPI(我正在使用 Kerberos 5),我已经检查过,我的机器上不支持 gssapi
sasl2-shared-mechlist
上面写着
GSS-SPNEGO,LOGIN,PLAIN,ANONYMOUS
但是在安装 gssapi 库之后
yum install cyrus-sasl-gssapi
机械清单状态
GSS-SPNEGO,GSSAPI,LOGIN,PLAIN,ANONYMOUS
比我 运行 再次代码万岁!
P.S。不要忘记验证并验证您的密钥表是否有效
kinit -kt /root/user.keytab user@domain.com
klist
我想连接到我们的 kerberized Hadoop 集群上的 Hive,然后 运行 来自机器的一些 hql 查询(显然哈哈 :)),它已经有自己的 Kerberose 客户端并且可以工作,keytab 已经通过和测试。
我们的 Hadoop 运行s HWS 3.1 和 CentOS7,我的机器也是 运行s CentOS7 我正在使用 Python 3.7.3 和 PyHive (0.6.1)。
我安装了一堆库(我也尝试卸载它们),因为我浏览了不同的论坛(HWS、Cloudera,这里是 SO...)
我通过 pip sasl 库安装
- 纯 sasl (0.6.1)
- pysasl (0.4.1)
- sasl (0.2.1)
- 节俭-sasl (0.3.0)
我是通过yum安装的
- cyrus-sasl-2.1.26-23.el7.x86_64
- cyrus-sasl-lib-2.1.26-23.el7.x86_64
- cyrus-sasl-plain-2.1.26-23.el7.x86_64
- saslwrapper-devel-0.16-5.el7.x86_64
- saslwrapper-0.16-5.el7.x86_64
- cyrus-sasl-lib-2.1.26-23.el7.i686
- cyrus-sasl-devel-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 库,Kerberos 连接设置错误?
我找到了解决方案,我查看了这个文档https://www.cyrusimap.org/sasl/sasl/sysadmin.html
哪里提到了 GSSAPI(我正在使用 Kerberos 5),我已经检查过,我的机器上不支持 gssapi
sasl2-shared-mechlist
上面写着
GSS-SPNEGO,LOGIN,PLAIN,ANONYMOUS
但是在安装 gssapi 库之后
yum install cyrus-sasl-gssapi
机械清单状态
GSS-SPNEGO,GSSAPI,LOGIN,PLAIN,ANONYMOUS
比我 运行 再次代码万岁!
P.S。不要忘记验证并验证您的密钥表是否有效
kinit -kt /root/user.keytab user@domain.com
klist