增加 h2o.init 超时
Increase h2o.init timeout
如何在通过 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.
所以,我查看了 github 上的 h2o
源代码,似乎没有 timeout
参数(R
和底层 java
代码)。有一个名为 session_timeout
的 java
论点,但我认为这不适用于我的问题。
所以我所做的是:
foreach(i=seq_along(workers),.inorder=FALSE,.multicombine=TRUE) %dopar% {
library(h2o)
startCounter=1
startCounterMax=3
while(inherits(clusterStatus<-try({
h2o.init(nthreads=-1)
capture.output(h2o.clusterStatus())
},silent=TRUE),"try-error")&(startCounter<=startCounterMax)) {
startCounter=startCounter+1
}
if (startCounter>startCounterMax) stop("Failed to start h2o server for ",
startCounterMax," successive times")
return(clusterStatus)
}
不是很好,但也够用了。
如果你试图形成一个由多个 H2O 节点组成的集群(比如 3 个 h2o 节点的集群,每台机器一个节点)并且你想等待指定的时间,那么你可以在 Java 中尝试代码 - water.H2O.waitForCloudSize(3, 50 * 1000/*ms*/);
我假设 R 中也应该有相应的参数。
如何在通过 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.
所以,我查看了 github 上的 h2o
源代码,似乎没有 timeout
参数(R
和底层 java
代码)。有一个名为 session_timeout
的 java
论点,但我认为这不适用于我的问题。
所以我所做的是:
foreach(i=seq_along(workers),.inorder=FALSE,.multicombine=TRUE) %dopar% {
library(h2o)
startCounter=1
startCounterMax=3
while(inherits(clusterStatus<-try({
h2o.init(nthreads=-1)
capture.output(h2o.clusterStatus())
},silent=TRUE),"try-error")&(startCounter<=startCounterMax)) {
startCounter=startCounter+1
}
if (startCounter>startCounterMax) stop("Failed to start h2o server for ",
startCounterMax," successive times")
return(clusterStatus)
}
不是很好,但也够用了。
如果你试图形成一个由多个 H2O 节点组成的集群(比如 3 个 h2o 节点的集群,每台机器一个节点)并且你想等待指定的时间,那么你可以在 Java 中尝试代码 - water.H2O.waitForCloudSize(3, 50 * 1000/*ms*/);
我假设 R 中也应该有相应的参数。