R snow可以创建的slave数量有限制吗?
Posted
技术标签:
【中文标题】R snow可以创建的slave数量有限制吗?【英文标题】:Is there a limit on the number of slaves that R snow can create? 【发布时间】:2013-05-03 21:38:04 【问题描述】:我正在尝试在 3 个不同的主机上构建一个包含大约 120 个进程的雪集群。这些是 AMD 服务器,每个服务器有 48 个内核。在构建了大约前 90 个从站后,我收到了这个错误:
cl = makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), rep("host3", 45)))
Error in socketConnection(port = port, server = TRUE, blocking = TRUE, :
all connections are in use
> traceback()
3: socketConnection(port = port, server = TRUE, blocking = TRUE,
open = "a+b")
2: newSOCKnode(names[[i]], options = options, rank = i)
1: makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46),
rep("host3", 45)))
我检查了我的系统限制,没有发现任何问题:
# cat /proc/sys/fs/file-max
12897622
# grep "#define __FD_SETSIZE" /usr/include/*.h /usr/include/*/*.h
/usr/include/linux/posix_types.h:#define __FD_SETSIZE 1024
# ulimit -a |grep open
open files (-n) 65536
snow 可以创建的进程数量是否有限制?
【问题讨论】:
【参考方案1】:是的,但这只是因为 R 可以创建的连接总数有限制(目前为 128)。这不仅包括套接字连接,因此您只能访问约 90 个工作节点。
> grep "define NCONNECTIONS" *
connections.c:#define NCONNECTIONS 128 /* snow needs one per slave node */
由于您使用的是 GNU/Linux,我建议您使用多核而不是雪。
【讨论】:
使用多核不允许他使用 3 个主机。但他可以使用 MPI 集群与雪。 另一种选择是在雪的每个节点上使用一个工作器,然后在每个工作器上使用多核。这是更多的工作,但扩展性更好。 @SteveWeston R 不需要为每个 MPI 工作者打开一个连接吗?或者它只与 MPI 主进程通信? @RobertKubrick:snow 使用 Rmpi 创建 MPI 集群,Rmpi 使用 Open MPI 等 MPI 分发,因此不受 R 连接的限制。 MPI 已被数千名工人使用。 @SteveWeston 好的,听起来不错。现在,当我尝试安装 Rpmi 时,我通过 USA (OH) CRAN 镜像得到“package ‘Rmpi’ is not available (for R version 2.15.1)’。以上是关于R snow可以创建的slave数量有限制吗?的主要内容,如果未能解决你的问题,请参考以下文章
crossfilter.js & dc.js:对要使用的维度和事实的数量有限制吗?