2016-07-18 79 views
6

我的意图是在同一计算机/服务器上从R内启动两个或多个h2o群集/实例(不是两个或更多节点!)以使多个用户可以在h2o同一时间。此外,我希望能够分别关闭和重新启动集群,也可以从R内部单独重新启动集群。我已经知道我无法简单地从R内部控制多个h2o集群,因此我试图从命令行启动两个集群在Windows 10:从内部启动多个h2o群集

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从R内部摧毁两个或两个以上的h2o群集? 提前谢谢!

注意1:我只使用我的本地Windows设备进行测试,实际上我想在Linux服务器上创建多个h2o群集。

注2:我用R GUI(3.2.5)和R Studio(版本0.99.892)试了一下,我把它们作为管理员运行。 h2o.jar文件位于我的工作目录中,我的Java版本是(Build 1.8.0_91-b14)。

注3:系统信息: - H2O & H2O [R包版本:3.8.3.2 - 视窗10家,版本1511 - 16 RAM,英特尔酷睿i5-6200U CPU采用2.30 GHz的

+0

考虑运行linux,甚至作为VM客户。使用开源软件时,它通常可以提高生产力。只有当您部署到该平台时,IMO win开发机才有意义,即天蓝色。 – jangorecki

回答

3

编辑:我已经改变了实习生= 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启动一个集群。坏消息是,只要我执行“system(command = launchH2O,intern = TRUE,wait = FALSE),R就会冻结”。事实上,R不会冻结,但它告诉我它很忙。只有在通过我的浏览器(ip:54321)关闭集群之后,R stopps再次变得繁忙......你有什么想法吗? PS:我为工作目录使用了另一条路径,但是自从集群启动后,这显然工作正常...... – Constantin

+0

我明白了 - 必须设置intern = FALSE,因为解释器在设置intern = TRUE时等待,即使等待设置为FALSE。所以系统(command = launchCluster1,intern = FALSE,wait = FALSE)有效。你介意如何通过cmd再次关闭集群吗? – Constantin

+0

@Constantin当连接到集群时,它应该是R中的'h2o.shutdown()'。 –