![](/img/trans.png)
[英]R cannot makeCluster (multinode) due to “cannot open the connection” error
[英]R: errors in makeCluster(multicore): cannot open the connection
我有以下问题。
为什么在标准节点上提交作业(最大核56)时一切运行正常,但是当我向big_memory节点(最大核128)提交相同的作业/代码时,我收到错误?
- R中的并行化代码:
no_cores < - detectCores() - 1
cl < - makeCluster(no_cores,outfile = paste0('。/ info_parallel.log'))
- 错误......
socketConnection出错(master,port = port,blocking = TRUE,open =“a + b”,:
无法打开连接
调用:... doTryCatch - > recvData - > makeSOCKmaster - > socketConnection
另外:警告信息:
在socketConnection中(master,port = port,blocking = TRUE,open =“a + b”,:
localhost:11232无法打开
执行停止
反序列化错误(节点$ con):从连接读取错误
调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize
执行停止
反序列化错误(节点$ con):从连接读取错误
调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize
执行停止
正如我所说,R代码在标准节点上运行良好,所以我认为它是large_memory节点的问题。 那可能是什么?
谢谢,
最后,我解决了它。
该错误是由R中的连接的默认限制引起的。连接的默认值是128.这里,“连接”表示每个节点的核心数,这些核心在代码中使用。
而在代码中,错误发生在“cl < - makeCluster ........”这一行。
no_cores < - detectCores() - 1
cl < - makeCluster(no_cores,outfile = paste0('。/ info_parallel.log'))
这里,detectCores()将获得节点上的最大内核数。
在集群的标准节点中,每个节点的核心数小于128,这就是R代码在标准节点上运行良好的原因; 而在我的情况下,large_memory分区中每个节点的核心数是128。 它默认达到核心数限制。 所以错误显示为:
无法打开连接
我尝试在large_memory节点上为核心运行作业设置核心数为120(最大核心数= 128)。 没有错误。 代码效果很好。
cl < - makeCluster( 120 ,outfile = paste0('。/ info_parallel.log'))
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.