无法从python[h2o.ai]连接到正在运行的h2o服务器

cetgtptt  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(403)

从主节点连接到emr核心节点上运行的h2o服务器时出错。

import h2o
h2o.connect(url="http://IP:54321")

错误跟踪

Connecting to H2O server at http://IP:54321... successful.
Traceback (most recent call last):
  File "/home/hadoop/TataCliqEMR/app/__init__.py", line 3, in <module>
    h2o.connect(ip="IP", port=54321)
  File "/usr/local/lib/python3.4/site-packages/h2o/h2o.py", line 86, in connect
    h2oconn.cluster.show_status()
  File "/usr/local/lib/python3.4/site-packages/h2o/backend/cluster.py", line 190, in show_status
    ["H2O internal security:",     self.internal_security_enabled],
  File "/usr/local/lib/python3.4/site-packages/h2o/backend/cluster.py", line 121, in internal_security_enabled
    return self._props["internal_security_enabled"]
KeyError: 'internal_security_enabled'

这里也没有答案

8gsdolmq

8gsdolmq1#

原因是h2o后端和客户端的版本不兼容(在本例中,客户端是h2o python模块)。h2o后端(集群上运行的java进程)和本地使用的PythonH2O模块的版本必须相同。
好像你的服务器 "http://IP:54321" )正在运行旧版本的h2o。因为您已经有一个正在运行的h2o集群正在尝试连接,所以最好的解决方案可能是安装不同版本的h2o-python模块(而不是相反的版本)。
如果您不知道服务器正在运行哪个版本,那么可以查看日志,也可以尝试 h2o.init(ip=IP) 它应该返回一个正确的“版本不匹配”错误,它将告诉您这两个版本。
要下载特定版本的h2o python模块,可以在changes.md中查找发行名(例如“turing”),然后转到下载页面url。例如,如果我想下载3.10.4.2,我会在上面链接的changes.md上搜索“3.10.4.2”,看到发行名是“ueno”。利用这些信息,您可以为该版本的下载页构建url,例如:

http://h2o-release.s3.amazonaws.com/h2o/rel-ueno/2/index.html

或者你可以找出 .whl 还有文件:

pip install http://h2o-release.s3.amazonaws.com/h2o/rel-ueno/2/Python/h2o-3.10.4.2-py2.py3-none-any.whl

写这个回复让我意识到找到旧版本的链接不是一件小事,所以我添加了一个jira来解决这个问题。

相关问题