首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R雪无限期悬挂的makeCluster函数

R雪无限期悬挂的makeCluster函数
EN

Stack Overflow用户
提问于 2013-07-31 09:05:02
回答 1查看 7.9K关注 0票数 4

我正在使用来自R包的makeCluster函数,snow从Linux机器开始在远程Linux机器上启动SOCK集群。这两台机器似乎已经成功地进行了通信(我能够在这两台机器之间建立ssh连接)。但是:

代码语言:javascript
运行
复制
makeCluster("192.168.128.24",type="SOCK")

不会抛出任何结果,只是无限期挂起。

我做错了什么?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-31 16:43:54

不幸的是,在创建雪花(或并行)集群对象时,有很多事情可能出错,最常见的故障模式是无限期挂起。问题是,makeSOCKcluster逐个启动集群工作人员,每个工作人员(如果成功启动)必须在主服务器启动下一个工作人员之前建立一个与主服务器的套接字连接。如果任何工作人员未能连接到主服务器,makeSOCKcluster将挂起,不会出现任何错误消息。工作人员可能会发出错误消息,但默认情况下,任何错误消息都会重定向到/dev/null

除了ssh问题之外,makeSOCKcluster还可能挂起,因为:

  • R未安装在工作机器上。
  • 没有安装在工人机器上的雪
  • 没有安装在与本地机器相同的位置。
  • 当前用户不存在于工作机器上
  • 联网问题
  • 防火墙问题

还有更多的可能性。

换句话说,如果没有进一步的信息,任何人都无法诊断这个问题,因此您必须进行一些故障排除才能获得该信息。

根据我的经验,最有用的故障排除技术是手动模式,在创建集群对象时通过指定manual=TRUE来启用该模式。设置outfile=""也是个好主意,这样工作人员的错误消息就不会重定向到/dev/null

代码语言:javascript
运行
复制
cl <- makeSOCKcluster("192.168.128.24", manual=TRUE, outfile="")

makeSOCKcluster将显示一个Rscript命令,以便在指定的机器上的终端中执行,然后它将等待您执行该命令。换句话说,makeSOCKcluster将挂起,直到您手动启动主机192.168.128.24(在您的情况下)上的工作人员。请记住,这是一种故障排除技术,而不是问题的解决方案,我们希望通过手动启动来获得更多关于为什么员工没有开始工作的信息。

显然,手动模式的使用绕过了任何ssh问题(因为您没有使用ssh),所以如果您可以在手动模式下成功地创建SOCK集群,那么很可能ssh就是您的问题。如果找不到Rscript命令,那么要么没有安装R,要么安装在不同的位置。但希望您会得到一些错误消息,这将引导您找到解决方案。

如果在指定的机器上执行指定的Rscript命令后,makeSOCKcluster仍然挂起,那么您可能会遇到网络或防火墙问题。

有关更多疑难解答的建议,请参见我对making cluster in doParallel / snowfall hangs的回答。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17966055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档