如何在多台机器上运行R?

时间:2016-05-24 06:28:01

标签: r

我关注使用this instructionmakeCluster function,但它似乎不适用于Windows

primary <- '192.168.1.235'
machineAddresses <- list(
list(host=primary,user='johnmount',
   ncore=4),
list(host='192.168.1.70',user='johnmount',
   ncore=4)
)

spec <- lapply(machineAddresses,
           function(machine) {
             rep(list(list(host=machine$host,
                           user=machine$user)),
                 machine$ncore)
           })
 spec <- unlist(spec,recursive=FALSE)

parallelCluster <- parallel::makeCluster(type='PSOCK',
                                     master=primary,
                                     spec=spec)
print(parallelCluster)

1 个答案:

答案 0 :(得分:4)

执行以下操作:

收集您可以ssh的机器地址列表。这是困难的部分,取决于您的操作系统,如果您以前没有尝试过,应该得到帮助。在这种情况下,我使用的是ipV4地址,但在使用Amazon EC2时,我使用的是主机名。

在我的情况下,我的列表是:

  

我的机器(主要):“192.168.1.235”,用户“rajeevkumar”另一个   Win-Vector LLC机器:“192.168.1.70”,用户“rajeevkumar”

请注意,我们没有收集密码,因为我们假设我们已在所有这些计算机的“authorized_keys”配置中设置了正确的“.ssh”和密钥对。我们正在调用我们用来发布整体计算“主要”的机器。

在尝试使用R之前,在终端shell中使用“ssh”尝试所有这些地址至关重要。

现在我们身后有系统的东西,R部分如下。使用以下命令启动群集:

 primary <- '192.168.1.235'
machineAddresses <- list(
  list(host=primary,user='johnmount',
       ncore=4),
  list(host='192.168.1.70',user='johnmount',
       ncore=4)
)

spec <- lapply(machineAddresses,
               function(machine) {
                 rep(list(list(host=machine$host,
                               user=machine$user)),
                     machine$ncore)
               })
spec <- unlist(spec,recursive=FALSE)

parallelCluster <- parallel::makeCluster(type='PSOCK',
                                         master=primary,
                                         spec=spec)
print(parallelCluster)
## socket cluster with 8 nodes on hosts
##                   ‘192.168.1.235’, ‘192.168.1.70’

就是这样。您现在可以在许多计算机上的许多核心上运行您的作业。

您可以在以下网址阅读更多内容:

http://www.r-bloggers.com/running-r-jobs-quickly-on-many-machines/