2016-07-18 2 views
6

Мое намерение состоит в том, чтобы запустить два или более кластера/экземпляров h2o (не два или более узлов!) из R на том же компьютере/сервере, чтобы разрешить нескольким пользователям подключаться с h2o на в то же время. Кроме того, я хочу иметь возможность отключать и перезапуска кластеров отдельно, также из-за R.Запуск нескольких кластеров h2o изнутри R

Я уже знаю, что я не могу управлять несколькими кластерами h2o просто изнутри R, поэтому я попытался запустить два кластера из командной строки в Windows 10:

java -Xmx1g -jar h2o.jar -name testCluster1 -nthreads 1 -port 54321 
java -Xmx1g -jar h2o.jar -name testCluster2 -nthreads 1 -port 54323 

Это прекрасно работает для меня:

library(h2o) 

h2o.init(startH2O = FALSE, ip = "localhost", port = 54321) 
Connection successful! 

R is connected to the H2O cluster: 
H2O cluster uptime:   4 minutes 8 seconds 
H2O cluster version:  3.8.3.2 
H2O cluster name:   testCluster 
H2O cluster total nodes: 1 
H2O cluster total memory: 0.87 GB 
H2O cluster total cores: 4 
H2O cluster allowed cores: 1 
H2O cluster healthy:  TRUE 
H2O Connection ip:   localhost 
H2O Connection port:  54321 
H2O Connection proxy:  NA 
R Version:     R version 3.2.5 (2016-04-14) 

h2o.init(startH2O = FALSE, ip = "localhost", port = 54323) 
Connection successful! 

R is connected to the H2O cluster: 
H2O cluster uptime:   3 minutes 32 seconds 
H2O cluster version:  3.8.3.2 
H2O cluster name:   testCluster2 
H2O cluster total nodes: 1 
H2O cluster total memory: 0.87 GB 
H2O cluster total cores: 4 
H2O cluster allowed cores: 1 
H2O cluster healthy:  TRUE 
H2O Connection ip:   localhost 
H2O Connection port:  54323 
H2O Connection proxy:  NA 
R Version:     R version 3.2.5 (2016-04-14) 

Теперь я хочу сделать то же самое внутри R с помощью команды системы().

launchH2O <- as.character("java -Xmx1g -jar h2o.jar -name testCluster -nthreads 1 -port 54321") 
system(command = launchH2O, intern =TRUE) 

Но я получаю сообщение об ошибке:

[1] "Error: Unable to access jarfile h2o.jar" 
attr(,"status") 
[1] 1 
Warning message: 
running command 'java -Xmx1g -jar h2o.jar -name testCluster -nthreads 1 -port 54321' had status 1 

Пытаюсь

system2(command = launchH2O) 

Я получаю предупреждение, и я не в состоянии соединиться с кластером:

system2(command = launchH2O) 
Warning message: 
running command '"java -Xmx1g -jar h2o.jar -name testCluster -nthreads 1 -port 54321"' had status 127 

h2o.init(startH2O = FALSE, ip = "localhost", port = 54321) 
Error in h2o.init(startH2O = FALSE, ip = "localhost", port = 54321) : 
Cannot connect to H2O server. Please check that H2O is running at http://localhost:54321/ 

Любые идеи, как начать/sh utdown два или более кластера h2o из R? Спасибо заранее!

Примечание 1: Я использую только локальное устройство Windows для тестирования, на самом деле хочу создать несколько кластеров h2o на сервере Linux.

Примечание 2: Я пробовал его как с R GUI (3.2.5), так и с R Studio (версия 0.99.892), и я запускал их как admin. Файл h2o.jar находится в моем рабочем каталоге, а моя версия Java (Build 1.8.0_91-b14).

Примечание 3: Системная информация: - h2o & h2o версия R пакет: 3.8.3.2 - Windows 10 Home, версия 1511 - 16 RAM, Intel Core i5-6200U CPU с 2,30 ГГц

+0

Рассмотрите возможность запуска linux, даже в качестве гостевого vm. Это повышает производительность при работе с открытым исходным кодом. IMO win dev имеет смысл только тогда, когда вы развертываете эту платформу, то есть azure. – jangorecki

ответ

3

EDIT: Я изменил к стажер = FALSE, в приведенных ниже примерах, на основе комментариев


Вам просто нужно менять каталог; это либо это, либо не установка wait = FALSE (для запуска команды в фоновом режиме).

launchH2O <- "java -Xmx1g -jar h2o.jar -name testCluster -nthreads 1 -port 54321" 
savewd <- setwd("/path/to/h2ojar/") 
system(command = launchH2O, intern =FALSE wait=FALSE) 
setwd(savewd) 

В последней строке, и присваивание savewd просто сохранить рабочий каталог.Кроме того, это должно работать:

launchH2O <- "java -Xmx1g -jar /path/to/h2ojar/h2o.jar -name testCluster -nthreads 1 -port 54321" 
system(command = launchH2O, intern =FALSE, wait=FALSE) 

Когда на Linux, есть еще один способ:

launchH2O <- "bash -c 'nohup java -Xmx1g -jar /path/to/h2ojar/h2o.jar -name testCluster -nthreads 1 -port 54321 &'" 
system(command = launchH2O, intern =FALSE) 

(Поскольку последняя команда явно ставит его в фоновом режиме, я не думаю, что вам нужно установить wait=FALSE.)

+0

Привет, Даррен, спасибо за быстрый ответ. Хорошей новостью является то, что теперь я могу начать кластер изнутри R. Плохая новость в том, что R зависает, как только я запускаю «system (command = launchH2O, intern = TRUE, wait = FALSE)». На самом деле, R не замерзает, но он говорит мне, что он занят. Только после закрытия кластера через мой браузер (ip: 54321), R останавливается снова ... у вас есть идея? PS: Я использовал другой путь для рабочего каталога, но это, очевидно, отлично работает с момента запуска кластера ... – Constantin

+0

Я получил его - вам нужно установить intern = FALSE, поскольку интерпретатор ждет, если вы установили intern = TRUE, даже если wait установлен в FALSE. Таким образом, система (command = launchCluster1, intern = FALSE, wait = FALSE) работает. Не могли бы вы объяснить, как снова закрыть кластеры через cmd? – Constantin

+0

@Constantin Он должен быть просто 'h2o.shutdown()' изнутри R, когда он подключен к кластеру. –

Смежные вопросы