如何阻止h2o将大量.ERR、.OUT和其他日志文件保存到本地驱动器

如何阻止h2o将大量.ERR、.OUT和其他日志文件保存到本地驱动器,r,logging,h2o,R,Logging,H2o,我目前正在运行一个脚本,其中生成了几个h2o glm和deeplearning模型,用于Monte Carlo交叉验证的多次迭代。运行完成后(大约需要半天),h2o将大量文件保存到本地驱动器(大小高达8.5 GB)。当RStudio或我的计算机重新启动时(正如我最初所想),这些文件不会被删除。有没有办法阻止h2o保存这些文件 从R中使用H2O.init()启动H2O时,应将stdout和stderr文件保存到临时目录中(请参见R的tempdir()以查看路径)。当R会话退出时,应删除此临时目录。

我目前正在运行一个脚本,其中生成了几个h2o glm和deeplearning模型,用于Monte Carlo交叉验证的多次迭代。运行完成后(大约需要半天),h2o将大量文件保存到本地驱动器(大小高达8.5 GB)。当RStudio或我的计算机重新启动时(正如我最初所想),这些文件不会被删除。有没有办法阻止h2o保存这些文件

从R中使用
H2O.init()
启动H2O时,应将stdout和stderr文件保存到临时目录中(请参见R的
tempdir()
以查看路径)。当R会话退出时,应删除此临时目录。这似乎不适用于RStudio,但是如果您从命令行使用R,它就可以工作。我不确定这是一个可以在RStudio中更改的设置,还是一个RStudio错误

但是你可以控制自己。您可以在命令行上使用java手动启动H2O,然后使用
H2O.init()
从R连接

在本例中,我使用5GB的Java堆内存启动H2O,但如果数据较大,则应该增加该内存。然后在R中连接将如下所示:

> h2o.init()
 Connection successful!

R is connected to the H2O cluster: 
    H2O cluster uptime:         16 hours 34 minutes 
    H2O cluster version:        3.15.0.99999 
    H2O cluster version age:    17 hours and 25 minutes  
    H2O cluster name:           H2O_started_from_R_me_exn817 
    H2O cluster total nodes:    1 
    H2O cluster total memory:   4.43 GB 
    H2O cluster total cores:    8 
    H2O cluster allowed cores:  8 
    H2O cluster healthy:        TRUE 
    H2O Connection ip:          localhost 
    H2O Connection port:        54321 
    H2O Connection proxy:       NA 
    H2O Internal Security:      FALSE 
    H2O API Extensions:         XGBoost, Algos, AutoML, Core V3, Core V4 
    R Version:                  R version 3.3.2 (2016-10-31) 
java -Xmx5g -jar h2o.jar > /dev/null 2>&1 &
因此,如果您想将stdout和stderr重定向到devnull,只需将redirect命令添加到java命令的末尾,即可启动H2O集群并再次从R连接到H2O。要重定向stderr和stdout,可以像这样附加
/dev/null 2>&1

> h2o.init()
 Connection successful!

R is connected to the H2O cluster: 
    H2O cluster uptime:         16 hours 34 minutes 
    H2O cluster version:        3.15.0.99999 
    H2O cluster version age:    17 hours and 25 minutes  
    H2O cluster name:           H2O_started_from_R_me_exn817 
    H2O cluster total nodes:    1 
    H2O cluster total memory:   4.43 GB 
    H2O cluster total cores:    8 
    H2O cluster allowed cores:  8 
    H2O cluster healthy:        TRUE 
    H2O Connection ip:          localhost 
    H2O Connection port:        54321 
    H2O Connection proxy:       NA 
    H2O Internal Security:      FALSE 
    H2O API Extensions:         XGBoost, Algos, AutoML, Core V3, Core V4 
    R Version:                  R version 3.3.2 (2016-10-31) 
java -Xmx5g -jar h2o.jar > /dev/null 2>&1 &

在运行H2O的火花壳中遇到此问题。shell连接了50个执行器,这导致这些节点上的
/tmp
目录最终导致存储问题


当调用
h2o.init()
时,它会创建jvm。来自h2o的日志记录由这些jvm处理。但是,当shell关闭时,这些jvm将持久化,并永久地将心跳错误记录在
/tmp
中。您需要找到与h2o关联的jvm并将其关闭。在我的案例中,我相信具体的流程名称,其中
water.H2OApp

Tom,您能否更新您的答案,告诉H2O如何将此输出重定向到devnull,以便首先不创建文件?Erin,这将是我的用例中的首选选项。我不知道我在做什么,但是当我的会话退出时,.OUT文件(存储问题的真正来源)没有被删除。@j我知道我已经更新了帖子,包括了如何做的说明。谢谢大家。但是,我不确定是否需要额外的dev/null语句,因为所讨论的文件不是从cmd启动时创建的。也就是说,Tom最初的解决方案工作得很好,在我解决与RStudio相关的潜在问题之前,它是一种很好的绷带。