R 中的多节点 H2O 集群未检测到其他 EC2 实例
Multi Node H2O cluster in R not detecting other EC2 instances
我一直在努力建立一个多节点 H2O 集群并 运行 使用 AWS EC2 实例。
我已经听从了 线程的建议,但仍然在与节点看不到对方的问题作斗争。 EC2 实例都使用我预先构建的相同 AMI,所以相同的 h2o.jar
文件在所有实例上,
我还尝试了以下故障排除建议:
- 名称集群
-name
- 而是使用
-network
标志
- 在安全组上打开端口 54321 作为
0.0.0.0
这是我的步骤:
1) 在同一可用区启动 AWS EC2 并获取私有 IP 和网络 cidr (172.31.0.0/20
)。将 ip 地址放入 flatfile.txt
172.31.8.210:54321
172.31.9.207:54321
172.31.13.136:54321
2) 将 flatfile.txt
复制到我想作为节点连接的所有服务器并启动 H2O
# cluster_run
library(h2oEnsemble)
library(ssh)
ips <- gsub("(.*):.*", "\1", readLines("flatfile.txt"))
start_cluster <- function(ip){
# Copy flatfile across
session <- ssh_connect(paste0("ubuntu@", ip), keyfile = "mykey.pem")
scp_upload(session, "flatfile.txt")
# Ensure no h2o instance is already running
out <- ssh_exec_wait(session, "sudo pkill java")
# Start H2O cluster
cmd <- gsub("\s+", " ", paste0("ssh -i mykey.pem -o 'StrictHostKeyChecking no' ubuntu@", ip,
" 'java -Xmx20g
-jar /home/rstudio/R/x86_64-pc-linux-gnu-library/3.5/h2o/java/h2o.jar
-name mycluster
-network 172.31.0.0/20
-flatfile flatfile.txt
-port 54321 &'"))
system(cmd, wait = FALSE)
}
start_cluster(ips[3])
start_cluster(ips[2])
start_cluster(ips[1])
3) 完成后,我现在想将 R
连接到我的新多节点集群
h2o.init(startH2O = F)
h2o.shutdown(prompt = FALSE)
这是我看到节点没有被拾取的地方:
我还看到,当我在不同的节点上启动 H2O 集群时,它没有选择网络中的其他机器:
您还需要将端口 54321+1(即 54322)添加到安全组。
内部通讯通过54322。
(我还会为 -network 指定 /16,因为其他人更容易理解。例如,即使您确定 /20 在技术上对您的网络设置是正确的,我也不能轻易确定。 :-)
根据实际的网络设置,您可能根本不需要 -network 标志。您的实例可能只有一个接口。
我一直在努力建立一个多节点 H2O 集群并 运行 使用 AWS EC2 实例。
我已经听从了 h2o.jar
文件在所有实例上,
我还尝试了以下故障排除建议:
- 名称集群
-name
- 而是使用
-network
标志 - 在安全组上打开端口 54321 作为
0.0.0.0
这是我的步骤:
1) 在同一可用区启动 AWS EC2 并获取私有 IP 和网络 cidr (172.31.0.0/20
)。将 ip 地址放入 flatfile.txt
172.31.8.210:54321
172.31.9.207:54321
172.31.13.136:54321
2) 将 flatfile.txt
复制到我想作为节点连接的所有服务器并启动 H2O
# cluster_run
library(h2oEnsemble)
library(ssh)
ips <- gsub("(.*):.*", "\1", readLines("flatfile.txt"))
start_cluster <- function(ip){
# Copy flatfile across
session <- ssh_connect(paste0("ubuntu@", ip), keyfile = "mykey.pem")
scp_upload(session, "flatfile.txt")
# Ensure no h2o instance is already running
out <- ssh_exec_wait(session, "sudo pkill java")
# Start H2O cluster
cmd <- gsub("\s+", " ", paste0("ssh -i mykey.pem -o 'StrictHostKeyChecking no' ubuntu@", ip,
" 'java -Xmx20g
-jar /home/rstudio/R/x86_64-pc-linux-gnu-library/3.5/h2o/java/h2o.jar
-name mycluster
-network 172.31.0.0/20
-flatfile flatfile.txt
-port 54321 &'"))
system(cmd, wait = FALSE)
}
start_cluster(ips[3])
start_cluster(ips[2])
start_cluster(ips[1])
3) 完成后,我现在想将 R
连接到我的新多节点集群
h2o.init(startH2O = F)
h2o.shutdown(prompt = FALSE)
这是我看到节点没有被拾取的地方:
我还看到,当我在不同的节点上启动 H2O 集群时,它没有选择网络中的其他机器:
您还需要将端口 54321+1(即 54322)添加到安全组。
内部通讯通过54322。
(我还会为 -network 指定 /16,因为其他人更容易理解。例如,即使您确定 /20 在技术上对您的网络设置是正确的,我也不能轻易确定。 :-)
根据实际的网络设置,您可能根本不需要 -network 标志。您的实例可能只有一个接口。