我想连接到我们的Kerberos化Hadoop集群上的Hive,然后从机器上运行一些hql查询(显然是haha :)),该机器已经拥有自己的Kerberose Client并且可以正常工作,keytab已通过并经过测试。

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

我正在通过不同的论坛(HWS,Cloudera,在这里等等)安装了许多库(并且我也尝试卸载它们)。

我通过pip sasl库安装

  • pure-sasl(0.6.1)
  • pysasl(0.4.1)
  • sasl(0.2.1)
  • thrift-sasl(0.3.0)

  • 我通过百胜安装
  • 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

  • 下面是我与 hive 的联系
    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
    

    它说



    但是在安装gssapi库之后
    yum install cyrus-sasl-gssapi
    

    机甲状态



    比起我,我再次运行代码,万岁!

    附言不要忘了加强和验证您的密钥表是有效的
    kinit -kt /root/user.keytab [email protected]
    klist
    

    关于python - 将pyhive与kerberos票证一起使用以连接到kerberized hadoop集群,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57521448/

    10-11 22:07