2017-04-20 3 views
1

어떻게 h2o 시작을 늘릴 수 있습니까? 시간 초과 R을 통해 h2o 서버를 시작할 때? 다중 노드 AWS EC2 클러스터가 있습니다. 여기서 각 노드에서 별도의 h2o 서버를 시작합니다. 시작한 후에는 일부 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를 사용하고 있으며 우분투 16.04입니다.

+0

여러 개의 H2O 클러스터 (각 노드에 하나씩)를 실행하는 것이 목표입니까? 또는 여러 노드에 걸쳐 단일 H2O 클러스터가 있습니까? 보통 우리는 후자를하는 사람들을 보았습니다 (https://github.com/h2oai/h2o-3/tree/master/ec2). 그래서 저는 궁금합니다. –

+0

현재 노드 당 하나의 H2O 클러스터가 필요합니다. CV와 하이퍼 파라미터 검색 알고리즘을 직접 구현했습니다. 노드 당 하나의 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 노드의 클러스터를 형성하려는 경우 (시스템 당 하나의 노드로 3 개의 h2o 노드의 클러스터라고 가정) 지정된 시간 동안 기다리고 싶다면 Java 코드에서 시도하십시오 - water.H2O.waitForCloudSize(3, 50 * 1000/*ms*/); I R에 해당 매개 변수가 있어야한다고 가정하십시오.

+0

'R'인터페이스를 통해 노출 된 것을 보지 못했습니다. – cryo111