Как легко выполнять команды 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.