Как легко выполнять команды R на удаленном сервере?

Я использую Excel + R для Windows на довольно медленном рабочем столе. У меня есть полный доступ администратора к очень быстрому серверу на базе Ubuntu. Мне интересно: как удаленно выполнять команды на сервере?

Что я могу сделать, это сохранить необходимые переменные с помощью saveRDS и загрузить их на сервере с помощью loadRDS, выполнить команды на сервере, а затем сохранить результаты и загрузить их в Windows.

Но все это очень интерактивно и ручно, и вряд ли можно сделать это на регулярной основе.

Есть ли способ сделать материал непосредственно из R, например

  • Подключение к серверу через, например, SSH,
  • Перенести необходимые объекты (которые можно указать вручную)
  • Выполните заданный код на сервере и дождитесь результата
  • Получите результат.

Я мог бы запустить весь R удаленно, но тогда это вызовет проблемы, связанные с сетью. Большинство команд R, которые я делаю из Excel, очень быстры и голодны. Мне просто нужно дистанционно выполнить некоторые конкретные команды, не все из них.

Ответ 1

Есть еще несколько вариантов: 1) Вы можете делать материал непосредственно из R, используя Rserve. См.: https://rforge.net/

Имейте в виду, что Rserve может принимать соединения от клиентов R, см., например, как подключиться к Rserve с клиентом R.

2) Вы можете настроить кластер на своей Linux-машине, а затем использовать эти объекты кластера у своего клиента Windows. Самое простое - использовать Snow, https://cran.r-project.org/package=snow, также см. Foreach и многие другие библиотеки кластеров.

Ответ 2

Вот моя настройка.

  • Скопируйте свой код и данные с помощью scp. (Я использовал github, поэтому я клонировал свой код из github. Это помогает убедиться, что моя работа воспроизводима)

  • (необязательно) Используйте sshfs для установки удаленной папки на вашем локальном компьютере. Это позволяет редактировать удаленные файлы с помощью локального текстового редактора вместо командной строки ssh.

  • Поместите все вещи, которые вы хотите запустить, в R script (на удаленном сервере), а затем запустите его через ssh в режиме пакетной передачи.

Ответ 3

Существует несколько опций , самый простой - обмен безопасными ключами, чтобы все время не вводить пароли SSH/SCP вручную. После этого вы можете написать простой R script, который будет:

  • Сохраните необходимые переменные в файле данных,
  • Использовать scp для загрузки файла данных на сервер ubuntu
  • Используйте ssh для запуска удаленного script, который будет обрабатывать данные (которые вы только что загрузили) и сохранить результат в другом файле данных
  • Опять же, используйте команду scp для передачи результатов на вашу рабочую станцию.

Вы можете использовать команду R system для запуска scp и ssh с необходимыми параметрами.

Еще одна опция - настроить работу кластера на удаленном компьютере, затем вы можете экспортировать данные с помощью clusterExport и оценить выражения с помощью clusterEvalQ и clusterApply.