К сожалению, есть много вещей, которые могут пойти не так при создании снежного (или параллельного) кластерного объекта, и наиболее распространенный режим отказа - это зависание на неопределенное время. Проблема в том, что makeSOCKcluster
запускает рабочих кластера один за другим, и каждый рабочий (в случае успешного запуска) должен установить соединение сокета с мастером, прежде чем мастер продолжит запуск следующего рабочего. Если какой-либо из рабочих не сможет снова подключиться к мастеру, makeSOCKcluster
зависнет без каких-либо сообщений об ошибке. Рабочий может выдать сообщение об ошибке, но по умолчанию любое сообщение об ошибке перенаправляется на /dev/null
.
Помимо проблем с ssh, makeSOCKcluster
мог зависнуть по следующим причинам:
- R не установлен на рабочем компьютере
- снег не установлен на рабочую машину
- R или снег не установлен в том же месте, что и локальный компьютер
- текущий пользователь не существует на рабочем компьютере
- проблема с сетью
- проблема с брандмауэром
и есть еще много возможностей.
Другими словами, никто не может диагностировать эту проблему без дополнительной информации, поэтому вам необходимо выполнить некоторые действия по устранению неполадок, чтобы получить эту информацию.
По моему опыту, единственный наиболее полезный метод устранения неполадок - это ручной режим, который можно включить, указав manual=TRUE
при создании объекта кластера. Также неплохо установить outfile=""
, чтобы сообщения об ошибках от рабочих не перенаправлялись на /dev/null
:
cl <- makeSOCKcluster("192.168.128.24", manual=TRUE, outfile="")
makeSOCKcluster
отобразит команду Rscript для выполнения в терминале на указанном компьютере, а затем будет ждать, пока вы выполните эту команду. Другими словами, makeSOCKcluster зависнет, пока вы вручную не запустите воркера на хосте 192.168.128.24, в вашем случае. Помните, что это метод устранения неполадок, а не решение проблемы, и мы надеемся получить больше информации о том, почему рабочие не запускаются, пытаясь запустить их вручную.
Очевидно, что использование ручного режима позволяет обойти любые проблемы с ssh (поскольку вы не используете ssh), поэтому, если вы можете успешно создать кластер SOCK в ручном режиме, то, вероятно, ваша проблема - ssh. Если команда Rscript не найдена, то R либо не установлен, либо установлен в другом месте. Но, надеюсь, вы получите сообщение об ошибке, которое приведет вас к решению.
Если makeSOCKcluster
по-прежнему просто зависает после того, как вы выполнили указанную команду Rscript на указанном компьютере, возможно, у вас проблема с сетью или брандмауэром.
Дополнительные советы по устранению неполадок см. В моем ответе на зависание кластера в doParallel / snowfall.
person
Steve Weston
schedule
31.07.2013