无法从 Python [H2O.ai] 连接到 运行 H2o 服务器
Unable to connect to a running H2o Server from Python [H2O.ai]
从主节点连接到 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'
原因是 H2O 后端和客户端的版本不兼容(在这种情况下,客户端是 h2o Python 模块)。您在本地使用的 H2O 后端版本(Java 进程 运行 在您的集群上)和 Python h2o 模块必须是一样。
您的服务器(位于 "http://IP:54321"
)似乎是 运行 旧版本的 H2O。由于您已经有一个要连接的 H2O 集群 运行,最好的解决方案可能是安装不同版本的 h2o Python 模块(而不是相反)。
如果您不知道您的服务器是什么版本 运行,那么您可以查看日志,或者您可以尝试 h2o.init(ip=IP)
它应该 return 一个合适的 "version mismatch" 会告诉你两个版本的错误。
要下载 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 来解决这个问题。
从主节点连接到 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'
原因是 H2O 后端和客户端的版本不兼容(在这种情况下,客户端是 h2o Python 模块)。您在本地使用的 H2O 后端版本(Java 进程 运行 在您的集群上)和 Python h2o 模块必须是一样。
您的服务器(位于 "http://IP:54321"
)似乎是 运行 旧版本的 H2O。由于您已经有一个要连接的 H2O 集群 运行,最好的解决方案可能是安装不同版本的 h2o Python 模块(而不是相反)。
如果您不知道您的服务器是什么版本 运行,那么您可以查看日志,或者您可以尝试 h2o.init(ip=IP)
它应该 return 一个合适的 "version mismatch" 会告诉你两个版本的错误。
要下载 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 来解决这个问题。