2017-04-20 11 views
1

h2oの起動を増やすにはどうすればいいですか?タイムアウトを使ってh2oサーバーを起動すると、 私は、各ノードで別々のh2oサーバーを起動するマルチノードAWS EC2クラスターを持っています。起動後、いくつかのEC2ノードが少し遅くなる可能性があります。これらのノードでh2o初期化コードを再実行するよりもタイムアウトを増やすことになります。h2o.initタイムアウトを増やす

は、私が現在やっていることはh2o.init(nthreads=-1)がタイムアウトを生じた場合h2o.clusterStatus()でエラーがスローされます

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 v 3.10.4.4を使用しています。私はubuntu 16.04を使用しています。

+0

複数のH2Oクラスター(各ノードに1つ)を稼働させることを目標にしていますか?または複数のノードにまたがる単一のH2Oクラスターですか?通常、私たちは後者をやっている人たち(https://github.com/h2oai/h2o-3/tree/master/ec2)を見ているだけなので、私は興味があります。 –

+0

現在、ノードあたり1つのH2Oクラスタが必要です。私はCVとハイパーパラメータの検索アルゴリズムを自分で実装しました。ノードあたり1台のh2oサーバが現時点で最適です。 – cryo111

+0

さて、それを持っています。 'h2o.init()'コールの前に 'Sys.sleep(10)'を追加して、ワーカーノードを起動してそこにH2Oクラスタを起動するまでに時間を置くことができますか? –

答えて

2

だから、私はgithubの上h2oソースコードを見て、timeout引数は(R中にも、基礎となるjavaコードでもない)があるかのように思えません。 java引数はsession_timeoutと呼ばれますが、これは私の問題には当てはまりません。

だから何私がやったことはこれです:

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) 
} 

ない非常に素晴らしいが、それは仕事をしていません。

0

複数のH2Oノードのクラスタを作成しようとしている場合(マシンごとに1つのノードを持つ3つのh2oノードのクラスタ)、指定された時間だけ待機する場合は、Javaコードで試してみてください - water.H2O.waitForCloudSize(3, 50 * 1000/*ms*/); I Rに対応するパラメータがあるはずであると仮定します。

+0

これは 'R'インターフェースで公開されていませんでした。 – cryo111

関連する問題