设置 H2O 群集,同时运行多个需要访问群集的 R 程序(接近 20 个)



我必须使用不同的参数并行运行相同的 R 脚本(通过批处理(。R 脚本生成 H2O 模型并对其进行评分。在这种情况下,我应该,

  1. 是否为 R 脚本的每个批处理运行设置单独的群集?

(或(

  1. 创建一个公共集群并设置脚本以使用它?

我更喜欢后一种解决方案,但我不确定如何自动初始化和关闭这么多批次的 H2O 集群。第一批必须创建集群(H2O.init((,最后一批必须关闭它(

为每个 R 会话设置单个 h2o 集群是理想的。

使用h2o::h2o.init()启动 h2o 集群时,请确保为每个 R 会话指定不同的这些内容(每个脚本运行自己的 R 会话(:

  • ip/port(本地主机下的端口尚未占用(
  • name(通过顶部/htop在终端上检查其进度/使用情况(

根据需要更改其他选项。每个 R 会话都知道它正在运行的 h2o 群集,h2o::h2o.shutdown()只会关闭特定的 h2o 群集。

建议使用设置单个群集并让所有脚本使用它,因为它更有效。每个集群都有内存开销,因此您的 20 个单独的集群将浪费(如果所有脚本都需要使用任何静态数据表,则更是如此(。您还必须猜测给每个人的正确金额。

另一方面,如果你的 20 个脚本每个都引用一个特定的表,例如用它们自己的数据加载它,并且通常假设它们是唯一运行的脚本,你就会遇到一个问题:你要么需要修改脚本以使其运行良好,要么在自己的 ip/port 上运行每个脚本。

我不确定如何自动初始化和关闭这么多批次的 H2O 集群。第一批必须创建集群(H2O.init((,最后一批必须关闭它(

在运行第一个脚本之前从命令行启动 H2O,并在所有脚本完成后手动终止它。通过这样做,每个脚本在执行h2o.init()调用时都会发现它已经在运行。

如果必须完全自动,请确保启动命令将首先运行,但您需要某种观察程序脚本来注意所有其他进程何时完成。 (我倾向于在 cron 作业上运行psgrep的组合;当然,还有更复杂的方法。

相关内容

  • 没有找到相关文章

最新更新