我正在尝试通过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上的端口以进行监听
sudo nc -l <portnumber>并保持终端打开
从另一个终端检查netstat -an |grep <portnumber> |grep LISTEN是否将端口显示为LISTENING
在计算机2上,运行nc machine1 <portnumber>并查看u是否能够连接并键入内容


如果以上方法都可以,则您的路由器设置正确。

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

10-07 18:00