【发布时间】:2017-09-16 19:47:04
【问题描述】:
如何在通过 R 启动 h2o 服务器时增加 h2o 启动 超时?
我有一个多节点 AWS EC2 集群,我在每个节点上启动一个单独的 h2o 服务器。启动后,某些 EC2 节点可能会有点慢,我宁愿增加超时时间,也不愿在这些节点上重新运行 h2o 初始化代码。
我目前正在做的事情是
library(doParallel)
library(foreach)
workers=parallel::makePSOCKcluster(workerIPs,master=masterIP)
registerDoParallel(workers)
foreach(i=seq_along(workers),.inorder=FALSE,.multicombine=TRUE) %dopar% {
library(h2o)
h2o.init(nthreads=-1)
paste0(capture.output(h2o.clusterStatus()),collapse="\n")
}
如果h2o.init(nthreads=-1) 产生超时,慢速节点将在h2o.clusterStatus() 抛出错误。
顺便说一句:我使用的是 h2o v 3.10.4.4,我使用的是 ubuntu 16.04。
【问题讨论】:
-
您的目标是运行多个 H2O 集群(每个节点上一个)吗?或者只是跨多个节点的单个 H2O 集群?通常我们看到人们在做后者(如此处所述:github.com/h2oai/h2o-3/tree/master/ec2),所以我只是好奇。
-
目前,我希望每个节点有一个 H2O 集群。我自己实现了 CV 和超参数搜索算法——所以目前每个节点一个 h2o 服务器最适合我。
-
好的,知道了。您能否在您的
h2o.init()调用之前添加一个Sys.sleep(10),以便在启动工作节点和在其上启动 H2O 集群之间留出一些时间,还是我在这里遗漏了什么? -
工人通常在几分钟前启动。但是,首次访问磁盘块时,新创建的实例(来自快照)的初始 EBS 磁盘 I/O 可能非常低。我想这就是
h2o.init有时会失败的原因。