繁体   English   中英

从Windows计算机启动Linux PSOCK群集挂起R

[英]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”,以查看工作进程是否退出或挂起。 如果它正在运行,则表明存在网络问题,该问题仅在非交互运行时才会发生,这看起来很奇怪。

一些其他评论:

  • 在主服务器上使用Rterm.exe,以便在使用outfile=""时看到任何工作程序输出。
  • 我建议使用“ Pageant”,这样您就不需要使用未加密的私钥。 这样更安全,并且不需要使用plink“ -i”选项。
  • 在主服务器和工作服务器上使用相同版本的R是一个好主意。
  • 如果您不顾一切,可以在通过strace执行Rscript的Linux机器上为Rscript编写包装脚本。 这将告诉您在工作者退出或挂起时执行了哪些系统调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM