R:并行makePSOCKcluster挂起

时间:2015-09-05 16:35:51

标签: r parallel-processing cluster-computing

我正在尝试通过makePSOCKcluster连接到另一台计算机:

library(parallel)    
cl <- makePSOCKcluster('10.0.0.107')

不幸的是它挂了。我已经在ssh-keygen的帮助下完成了无密码登录,并且控制台中的ssh命令可以在两台计算机上运行。

我也尝试过:

cl <- makePSOCKcluster('10.0.0.107', outfile = '')

并收到以下错误:

starting worker pid=2937 on blabla:11225 at 17:41:20.364
Error in socketConnection(master, port = port, blocking = TRUE, open = "a+b",  : 
  cannot open the connection
Calls: <Anonymous> ... doTryCatch -> recvData -> makeSOCKmaster -> socketConnection
In addition: Warning message:
In socketConnection(master, port = port, blocking = TRUE, open = "a+b",  :
  blabla:11225 cannot be opened
Execution halted

然后Steve Weston的answer建议我尝试了手动模式。我一步一步地调试slaveRSOCK函数。我被困住了:

Error in socketConnection(master, port = port, blocking = TRUE, open = "a+b",  :
  cannot open the connection
In addition: Warning message:
In socketConnection(master, port = port, blocking = TRUE, open = "a+b",  :
  blabla:11225 cannot be opened

我还尝试使用

打开任何端口
sudo iptables -A INPUT -p tcp --dport 11000 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 11000 -j ACCEPT

它在两台计算机上都有变化。

在两台笔记本电脑上,我都有相同版本的R(R.3.2.2)和parallel包。一台计算机有Ubuntu 14.04,另一台有Kubuntu 14.04。

请帮忙。

1 个答案:

答案 0 :(得分:0)

  1. 计算机1 上打开一个端口进行收听 sudo nc -l <portnumber>并将终端打开

  2. 从另一个终端检查netstat -an |grep <portnumber> |grep LISTEN是否将端口显示为 LISTENING

  3. 机器2
  4. ,运行nc machine1 <portnumber>,看看您是否能够连接并输入内容

  5. 如果以上工作正常,那么您的路由器设置是正确的。

    该问题有90%的可能性是由路由器和防火墙设置引起的。