[英]Starting a Linux PSOCK cluster from a Windows machine hangs R
我正在尝试使用并行程序包在Linux机器上设置群集。 有一个缺点是,我用作主机的计算机正在运行Windows,而不是CentOS。
在使用puttygen和plink(sputty版本的ssh)进行了一些修改之后,我得到了一个命令字符串,该字符串可以在(a)从属服务器上执行Rscript,而无需输入密码:
plink -i d:/hong/documents/gpadmin.ppk -l gpadmin 192.168.224.128 Rscript
其中gpadmin.ppk
是使用puttygen生成并复制到从属gpadmin.ppk
的私钥文件。
我将其转换为makeCluster
调用,如下所示:
cl <- makeCluster("192.168.224.128",
user="gpadmin",
rshcmd="plink -i d:/hong/documents/gpadmin.ppk",
master="192.168.224.1",
rscript="Rscript")
但是当我尝试运行它时,R(在Windows上)挂起。 好吧,它不像崩溃时那样挂起,但是直到我按Escape时它才做任何事情。
但是,我可以通过在调用结束时添加manual=TRUE
来努力使集群运行:
cl <- makeCluster("192.168.224.128",
user="gpadmin",
rshcmd="plink -i d:/hong/documents/gpadmin.ppk",
master="192.168.224.1",
rscript="Rscript",
manual=TRUE)
然后,使用上面的plink命令登录从服务器,并在出现的bash提示符下运行R显示的字符串。 这表明该字符串很好,但使makeCluster
尝试自行运行它感到困惑。
谁能帮助诊断正在发生的事情以及如何解决? 我宁愿不必每次手动登录16个以上节点来启动集群。
我在主服务器上的Windows 7上运行R 3.0.2,在从属服务器上的CentOS上运行R 3.0.0。
您创建群集的方法似乎正确。 根据您的指示,我能够从Windows计算机在Linux计算机上启动PSOCK群集。
我的第一个想法是这是一个引用问题,但是自从Rscript命令在手动模式下为您工作以来,情况似乎并非如此。 我的第二个想法是,非交互式运行时,您的环境未正确初始化。 例如,如果在交互式运行时Rscript仅位于您的PATH中,则可能会出现问题,但事实并非如此,因为您可以通过plink执行Rscript。 您是否检查过〜/ .Rprofile中是否只有可交互工作的内容? 您可能需要暂时删除Linux机器上的〜/ .Rprofile,以查看是否有帮助。
如果工作程序发出任何错误或警告消息,则应使用outfile=""
。 在makeCluster
挂起时,应在Linux机器上运行“ ps”,以查看工作进程是否退出或挂起。 如果它正在运行,则表明存在网络问题,该问题仅在非交互运行时才会发生,这看起来很奇怪。
一些其他评论:
outfile=""
时看到任何工作程序输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.