2017-05-04 46 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

就可以輕鬆找到下載頁面。是的,您是對的。 –