【问题标题】:Unable to connect to a running H2o Server from Python [H2O.ai]无法从 Python [H2O.ai] 连接到正在运行的 H2o 服务器
【发布时间】:2017-10-02 03:46:35
【问题描述】:

从主节点连接到运行在 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'

It's also unanswered here

【问题讨论】:

  • 请说明您运行的 H2O 版本。如果不是最新的稳定版本,请务必升级,再试一次,看看是否能解决问题。

标签: python hadoop h2o


【解决方案1】:

造成这种情况的原因是 H2O 后端和客户端的版本不兼容(在这种情况下,客户端是 h2o Python 模块)。您在本地使用的 H2O 后端(在您的集群上运行的 Java 进程)和 Python h2o 模块的版本必须相同。

您的服务器("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 来解决这个问题。

【讨论】:

  • 后续说明:有人向我指出,通过谷歌搜索“h2o 3.10.4.2”很容易找到下载页面
猜你喜欢
  • 2018-01-24
  • 2012-11-03
  • 2019-03-21
  • 2015-08-15
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2018-04-04
相关资源
最近更新 更多