在具有特定连接节点的 hadoop 集群中启动 h2o url

Starting h2o in hadoop cluster with specific connection node url

有没有办法在集群的特定节点上启动 h2o 实例接口?例如...

使用命令时:

$ hadoop jar h2odriver.jar -nodes 4 -mapperXmx 6g -output hdfsOutputDir

在 h2o 安装目录中,在节点 172.18.4.62 中,我得到(删节的)输出:

....
H2O node 172.18.4.65:54321 reports H2O cluster size 1
H2O node 172.18.4.66:54321 reports H2O cluster size 1
H2O node 172.18.4.67:54321 reports H2O cluster size 1
H2O node 172.18.4.63:54321 reports H2O cluster size 1
H2O node 172.18.4.63:54321 reports H2O cluster size 4
H2O node 172.18.4.66:54321 reports H2O cluster size 4
H2O node 172.18.4.67:54321 reports H2O cluster size 4
H2O node 172.18.4.65:54321 reports H2O cluster size 4
H2O cluster (4 nodes) is up
(Note: Use the -disown option to exit the driver after cluster formation)

Open H2O Flow in your web browser: http://172.18.4.65:54321

(Press Ctrl-C to kill the cluster)
Blocking until the H2O cluster shuts down...

然后从想要连接到 h2o 实例的 python 脚本,我会做类似的事情:

h2o.init(ip="172.18.4.65")

连接到 h2o 实例。但是,最好能够控制 h2o 实例连接所在的地址。

有办法吗?这个问题是confused/wrong-headed吗?我的总体目标是定期让 python 脚本 运行 启动一个 h2o 集群,在该集群上做一些事情然后关闭集群(无法知道用于连接到集群的地址意味着脚本永远无法确定要连接到哪个地址)。任何意见,将不胜感激。谢谢

当您在 Hadoop 上启动 H2O 集群时,如下所示:

$ hadoop jar h2odriver.jar -nodes 3 -mapperXmx 10g -output /user/test

命令执行后会得到如下输出:

Determining driver host interface for mapper->driver callback...
    [Possible callback IP address: x.x.x.217]
    [Possible callback IP address: 127.0.0.1]
Using mapper->driver callback IP address and port: x.x.x.217:39562

(You can override these with -driverif and -driverport/-driverportrange.)

如您所见,回调 IP 地址是 select由 hadoop 运行 编辑的。所以在大多数情况下 IP 地址和端口是 select 由 Hadoop 运行 时间找到最好的,

您还可以看到将 -driverif x.x.x.x -driverport NNNNN 与 hadoop 命令一起使用的选项,但我不确定这是否真的是个好选择。除了我正在启动集群的节点 ip 之外,我还没有测试过它,但它确实可以从它启动命令的 IP 运行。

根据我的经验,在Hadoop上启动H2O集群最流行的方式是让Hadoop决定集群,他们只需要解析link的输出如下:

Open H2O Flow in your web browser: x.x.x.x:54321

解析以上行以获取要连接的驱动程序的 IP address/port 来自 R/Python API。