如何设置群集从属节点(在Windows上)

时间:2014-03-24 09:19:34

标签: r cluster-computing snow rparallel

我需要在15台机器(每个4个核心)上运行数千个*模型,所有Windows都需要。我开始学习parallelsnowsnowfall个软件包并阅读了一些介绍,但他们主要关注的是主人的设置。 关于如何在Windows上设置工作者(从属)节点的信息很少。这些信息通常是矛盾的: some say that SOCK cluster is practically the easiest way to go,其他人声称SOCK cluster setup is complicated on Windows (sshd setup) and the best way to go is MPI

那么,在Windows上安装从节点的最简单方法是什么? MPI,PVM,SOCK还是NWS?我的,可能是天真的想法(优先列出):

  1. 使用从属节点上的所有4个核心(必需)。
  2. 理想情况下,我只需要R和一些软件包以及一个从属R脚本或R函数来侦听某些端口并等待来自master的任务。
  3. 理想情况下,可以从群集中动态添加/删除节点。
  4. 理想情况下,从站将连接到主站 - 因此我不必列出主站配置中的所有从站IP。
  5. 只有1是100%需要,2-4是"会很好"。请求太天真了吗?

    我很抱歉,但我无法从可用的文档和教程中找到答案。如果你指出我正确的来源,我将不胜感激。

    <小时/> *请注意,数以千计的模型中的每一个都需要至少7分钟,因此不会成为一个很大的沟通开销。

1 个答案:

答案 0 :(得分:2)

令人遗憾的是,所有这些API(如平行/降雪/降雪​​)如何使用都很复杂,很多文档但不是你需要的......我找到了一个非常简单的API,直接进入我勾画的想法!!它是 redis和doRedis R package (作为recommended here)。最后有一个very simple tutorial!刚刚修改了一下,得到了这个:

工人只需要R ,doRedis包和这个脚本:

require(doRedis)    
redisWorker('jobs', '10.0.0.7') # IP of the server

主服务器需要运行redis server(已安装the experimental windows binaries for Windows),此R代码:

require(doRedis)
registerDoRedis('jobs')
foreach(j=1:10,.combine=sum,.multicombine=TRUE) %dopar%
    ... # whatever you need to run
removeQueue('jobs')

添加/删除工作人员是完全动态的,无需在主服务器上指定IP,自动“负载平衡”,简单,无需大量文档!该解决方案满足所有要求甚至更多 - 如?registerDoRedis中所述:

  

doRedis并行后端可以容忍工作进程之间的错误,并自动重新提交失败的任务。

我不知道使用SOCKS / MPI / PVM / NWS 的平行/降雪/降雪​​有多复杂,如果有可能的话,但我觉得非常复杂。 ..

使用redis的唯一缺点我发现: