2017-05-04 148 views
1

连接到在主节点上运行在EMR核心节点上的H2o服务器时出错。无法连接到正在运行的H2o服务器[H2O.ai]

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

+0

请指出您正在运行的H2O的版本。如果它不是最新的稳定版本,请确保升级,再试一次,看看是否修复它。 –

回答

2

这样做的原因是H 2 O的后端和客户端的不兼容的版本(在此情况下,客户端是H2O Python模块)。 H2O后端(在集群上运行的Java进程)的版本以及您在本地使用的Python模块必须是相同的。

看起来你的服务器(在"http://IP:54321")运行的是旧版本的H2O。由于您已经有了一个正在尝试连接的H2O群集,所以最好的解决方案是安装不同版本的Python模块(而不是相反)。

如果你不知道你的服务器运行的是什么版本,那么你可以看看日志,或者你可以尝试h2o.init(ip=IP),它应该返回一个适当的“版本不匹配”错误,它会告诉你两个版本。

要下载H2O Python模块的特定版本,你可以看看在Changes.md的版本名称(如“图灵”),然后进入下载页面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来解决这个问题。

+0

后续注意事项:有人向我指出,只需使用“h2o 3.10.4.2” –

+0

就可以轻松找到下载页面。是的,您是对的。 –