【问题标题】:python cannot connect hiveserver2python无法连接hiveserver2
【发布时间】:2020-05-28 02:22:09
【问题描述】:

我已经尝试使用https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2 上的示例 但出现以下错误:

/usr/lib/python2.7/dist-packages/pkg_resources.py:1031: UserWarning: /home/dsnadmin/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
  warnings.warn(msg, UserWarning)
Traceback (most recent call last):
  File "hs2.py", line 8, in <module>
    database='default') as conn:
  File "build/bdist.linux-x86_64/egg/pyhs2/__init__.py", line 7, in connect
  File "build/bdist.linux-x86_64/egg/pyhs2/connections.py", line 46, in __init__
  File "build/bdist.linux-x86_64/egg/pyhs2/cloudera/thrift_sasl.py", line 66, in open
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found

这是配置单元日志:

ERROR [HiveServer2-Handler-Pool: Thread-31]: server.TThreadPoolServer (TThreadPoolServer.java:run(296)) - Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TSaslTransportException: No data or no sasl data in the stream
        at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
        at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:268)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TSaslTransportException: No data or no sasl data in the stream
        at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:328)
        at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
        at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)

有人可以帮忙解决问题吗?非常感谢。

操作系统版本:Ubuntu 14.04.1
Hive 版本:apache-hive-1.2.0
SASL 版本:sasl-0.1.3
节俭版本:thrift-0.9.1

【问题讨论】:

  • 您的 HiveServer2 是 Kerberized 还是在安全集群中?
  • 在 hive-site.xml 中,我设置了 hive.server2.authenticationNONE
  • 它只是您无法连接的一台机器,还是所有机器?
  • 我解决了像您将身份验证设置为 NOSASL 的问题。

标签: python hive


【解决方案1】:

您缺少一些依赖项,请确保安装了cyrus-sasl-develcyrus-sasl-gssapi

在基于 RHEL 的发行版上:

sudo yum install cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain

...或基于 Debian 的发行版:

sudo apt-get install sasl2-bin libsasl2-2 libsasl2-dev libsasl2-modules

根据@KenKennedy,如果使用 GSSAPI 进行身份验证,还要添加 libsasl2-modules-gssapi-mit 包。

【讨论】:

  • 但是,对于 Ubuntu 服务器,它们没有 cyrus-sasl-develcyrus-sasl-gssapi。我只是找到并安装了一些可能的软件包:sasl2-binlibsasl2-2libsasl2-dev
  • 谢谢,添加了两种发行包类型的包详细信息。如果现在看起来正确,请随时接受该答案。
  • 很抱歉,安装这些包后,错误仍然存​​在...python 连接 hiveserver2 的 pyhs2 库是否仅适用于基于 RHEL 的发行版?
  • 应该从 pip 安装,不是吗? sudo pip install pyhs2
  • 另外,如果使用 GSSAPI 进行身份验证,请添加 libsasl2-modules-gssapi-mit 包。
【解决方案2】:

1 在 hive-site.xml 中设置如下配置:

<property>
   <name>hive.server2.authentication</name>
   <value>NOSASL</value>
</property>

2个pyhs2程序代码变化如下:

with pyhs2.connect(host='localhost',
                   port=10000,
                   authMechanism="NOSASL",
                   user='user',
                   password='password',
                   database='default') as conn:

请注意用户名和密码不能为空,连接pyhs2时添加任意用户名和密码

【讨论】:

    【解决方案3】:

    设置以下环境变量对我有用:

    SASL_PATH=/usr/lib/x86_64-linux-gnu/sasl2 
    

    这是为 Ubuntu 准备的

    【讨论】:

    • 一般来说你想用``来包围你的代码,比如some_code,以提高可读性
    【解决方案4】:

    以上答案在我的情况下不起作用,我也尝试过其他答案。 最后,我解决了我的问题(不知道它是否适合你)。

    执行

    export LD_LIBRARY_PATH=/usr/lib64:/usr/local/lib:$LD_LIBRARY_PATH
    

    在运行脚本之前。

    我原来的LD_LIBRARY_PATH/usr/local/lib:/usr/lib64

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2015-05-08
      • 2016-11-10
      • 1970-01-01
      • 2014-06-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多