2016-07-18 102 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()'。 –