在R中调用h2o.init()以连接到远程集群时出错

时间:2016-05-23 20:40:42

标签: r amazon-ec2 h2o

我正在尝试从R上连接到EC2机器上托管的群集,并在Windows和Mac上同时尝试同样的错误:

> h2o.init(ip = "<Public IP>")
 Connection successful!


ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://<Public IP>:54321/3/Cloud?skip_ticks=true)

Error: lexical error: invalid char in json text.
                                       <!DOCTYPE html> <html lang="en"
                     (right here) ------^
  • 可以http://<Public IP>:54321/
  • 访问群集
  • 使用h2o.init()启动本地群集在R中也可以正常工作,因此只有在尝试连接远程时才会出现此问题。

我已经看到以下issue标记为已解决,但在我的情况下无效。有没有人经历过类似的事情?

UPD:答案非常简单。事实证明,guide for EC2中给出的代码示例已过时,并使用旧版本的H2O。使用EC2计算机上的最新版本(目前为3.9.1.5555)已解决了该问题。

1 个答案:

答案 0 :(得分:1)

详细说明OP的更新,使用远程群集时:

确保安装最新版本(请查看S3 download page以获取重定向到版本号)。在下面的示例中,这是3.13.0.3908:

wget http://s3.amazonaws.com/h2o-release/h2o/master/3908/h2o-3.13.0.3908.zip
unzip h2o-3.13.0.3908.zip
mv h2o-3.13.0.3908 h2o
cd h2o
java -Xmx4g -jar h2o.jar

然后,您需要安装与此版本对应的h2o-R版本。 (正确的版本可能不是CRAN版本。)否则您将收到如下错误:

Error in h2o.init(ip = "XXX.XX.XX.XXX", startH2O = FALSE) : 
  Version mismatch! H2O is running version 3.13.0.3908 but h2o-R package is version 3.10.4.6.
         Install the matching h2o-R version from - http://h2o-release.s3.amazonaws.com/h2o/master/3908/index.html

因此,您需要注意H2O正在运行的版本号(在上面的示例中为3908),请确保您之前已删除任何现有的h2o-R包(有关详细信息,请参阅here),以及然后做:

install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/master/3908/R")

现在应该有效:

library('h2o')
remoteH2O <- h2o.init(ip='XXX.XX.XX.XXX', startH2O=FALSE) #  Connection successful!