我必须使用不同的参数并行(通过批处理)运行相同的R脚本。 R脚本可构建H2O模型并为其评分。在这种情况下,我应该
(OR)
我希望使用后一种解决方案,但是我不确定如何对这么多批处理自动进行初始化和关闭H2O集群。第一批必须创建集群(H2O.init(),最后一批必须关闭集群)
答案 0 :(得分:2)
在每个R会话中设置单个h2o群集是理想的选择。
使用h2o::h2o.init()
启动h2o集群时,请确保为每个R会话(每个脚本运行自己的R会话)指定不同的名称:
ip
/ port
(本地主机下尚未使用的端口)name
(通过top / htop在终端上查看其进度/使用情况)根据需要更改其他选项。每个R会话都知道它正在运行的h2o群集,h2o::h2o.shutdown()
仅会关闭特定的h2o群集。
答案 1 :(得分:1)
设置单个群集,并让所有脚本都使用它是推荐的方法,因为它效率更高。每个群集都有内存开销,因此,您的20个单独的群集将很浪费(甚至在所有脚本都需要使用的静态数据表存在的情况下,这也会造成更多浪费)。您还必须猜测要给每个的正确数量。
另一方面,如果您的20个脚本都将引用一个特定的表,例如加载它们自己的数据,并通常假定它们是唯一运行的脚本,您会遇到一个问题:您需要修改脚本以使其表现良好,或者在各自的ip /端口上运行它们。
我不确定如何对这么多批次的H2O集群进行自动化初始化和关闭。第一批必须创建集群(H2O.init(),最后一批必须关闭集群)
Start H2O from the commandline,然后再运行第一个脚本,并在所有脚本完成后手动将其杀死。通过这种方式,每个脚本在执行h2o.init()
调用时都会发现它已经在运行。
如果必须完全自动化,请确保首先运行启动命令,但是您需要某种类型的观察程序脚本来通知所有其他进程何时完成。 (我倾向于在cron作业中同时使用ps
和grep
;当然,还有更复杂的方法。)