2016-05-24 3 views
0

Я последовал this instruction, который использует makeCluster function, но кажется, что это не работает для оконКак запустить 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) 
+0

Для детальных команд смотрите здесь https://stackoverflow.com/questions/44912893/running-parallel-r-on-multiple-hosts/44912894 # 44912894 – niths4u

ответ

3

Выполните следующие действия:

Составьте список адресов машин вы можете SSH. Это сложная часть, зависит от вашей операционной системы и того, с чем вам следует обратиться, если вы еще не пробовали ее раньше. В этом случае я использую адреса ipV4, но при использовании Amazon EC2 я использую имена хостов.

В моем случае мой список:

Моя машина (первичная): «192.168.1.235», пользователь «rajeevkumar» Другой Win-Vector LLC машины: «192.168.1.70», пользователь «rajeevkumar »

Заметьте, что мы не собирать пароли, как мы предполагаем, мы создали правильную “authorized_keys” и пары ключей в “.ssh” конфигурации всех этих машин. Мы называем машину мы используем, чтобы выдать общий вычислительный «первичный».

Жизненно вы пытаетесь все эти адреса с «SSH» в терминале оболочки, прежде чем пытаться их с R.

Теперь системный материал позади нас, часть 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/

Смежные вопросы