Как установить R на сервер и автоматизировать рутинные задачи

Как установить R на сервер и автоматизировать рутинные задачи

При работе с большими массивами информации очень часто приходиться использовать язык программирования, в моем случае это язык R, для сбора, подготовки и последующей обработки данных. Сначала, мне вполне хватало desktop версии R-studio, и пакета taskscheduleR для автоматического запуска скриптов на моём компьютере. Но в какой-то момент количество таких скриптов стало большим и все обновления зависели от того, включен ли мой компьютер. В этот момент я и задумался об установке R на сервер. Для своих потребностей я решил использовать сервер в Google Cloud Platform.

Примечание: Справедливости ради, стоит сказать, что во время установки R на сервер Google Cloud Platform и поисков информации о том, как это сделать, я наткнулся на статью в блоге Netpeak, в которой рассказано как сделать подобное, но при работе с этой статьей у меня все равно возникли сложности, о которых не говорилось в статье.

Итак, о чем мы поговорим:

  1. Создание виртуальной машины в Google Cloud Platform (GCP).
  2. Установка R и R Studio на сервер Google Cloud Platform.
  3. Установка дополнительных пакетов на сервере.
  4. Настройка автоматического запуска скриптов.
  5. Установка локали и решение проблем с кодировкой.

Создание виртуальной машины в Google Cloud Platform

Если вы решили создать сервер на Google Cloud Platform, то первым делом нужно подобрать и настроить для этих целей виртуальную машину. И здесь Google предоставляет огромный выбор, а ко всему и бесплатный тестовый период равный одному году.

Если вы первый раз используете GCP в своей работе, то перед тем, как приступать к созданию экземпляра виртуальной машины необходимо создать проект, и включить биллинг. Даже если вы используете бесплатный тестовый период, все равно нужно будет привязать свою карту. Денег при этом Google обязуется не снимать 😉 Карта всего лишь подтверждает, что вы реальный человек.

Теперь, когда с формальностями покончено, давайте приступим.

Переходим в консоль GCP на страницу виртуальных машин и выбираем пункт “Create instance”

Create instance in Google Cloud Platforms

В открывшемся окне задаем нужные нам параметры:

Set instance in GCP

  • Name — Вводим название нашей виртуальной машины, которое может содержать цифры, буквы и символ дефиса.
  • Region&Zone — Выбираем нужный нам регион и зону. Этот пункт влияет на то, какие вычислительные ресурсы нам будут доступны и где и как будут храниться наши данные.
  • Machine type — В этом пункте собираем себе машину с необходимыми мощностями. В расширенном режиме можно выбрать до 8 ядер и 52 Gb оперативной памяти:
    Выбор типа и характеристик виртуальной машины
  • Boot Disk — Выбираем операционную систему Ubuntu 16.04 LTS или же Ubuntu 18.04 LTS.
  • Identity and API access — Мы не планируем писать приложения, которые используют учетную запись службы для вызова облачных API Google, поэтому нам достаточно стандартных настроек. Более подробно об этом пункте можно почитать в справке.
  • Firewall — В настройках брандмауэра разрешаем возможность взаимодействия с сервером как по HTTP, так и по защищенному HTTPS протоколах.

Рядом, справа, будет указана примерная стоимость за использование виртуальной машины с заданными параметрами.

Не забудьте нажать на кнопку “Create”. Через некоторое время наша машина будет создана.

Установка R и R Studio на сервер Google Cloud Platform

Чтобы начать работу с только что созданной виртуальной машиной необходимо подключиться к ней по SSH (сетевой протокол, название которого происходит от слов Secure Shell). Он шифрует весь трафик, включая и передаваемые пароли. Для этого достаточно кликнуть на соответствующий пункт в меню:

Подключение к виртуальной машине через SSH протокол

И в новом окне браузера откроется… Матрица ))

Как выглядит подключение к виртуальной машине Google Cloud Platform

Первое что я подумал, увидев это окно “вот она матрица”. Но пообщавшись с программистами и узнав у них некоторые детали, я понял, что это все не так страшно и сейчас вы в этом убедитесь.

Интересно: В большинстве команд, которые мы дальше будем использовать в начале будет указана команда “sudo”, которая позволяет запускать команды от имени суперпользователя root.

Необходимо понимать, что помимо главного репозитория, содержащего все пакеты от разработчиков дистрибутива Ubuntu, существует и масса других источников пакетов. Одним из таких является пакет R. Добавление такого стороннего пакета происходит в 4 этапа:

  1. Нужно добавить ссылку на репозиторий в файл /etc/apt/sources.list.
  2. Добавить в apt keyring публичный ключ репозитория.
  3. Обновить кэш доступных пакетов
  4. Установить необходимый пакет.

А теперь подробнее о каждом из этих пунктов:

Добавить ссылку на репозиторий CRAN в файл /etc/apt/sources.list.

Другими словами, мы добавляем в файл /etc/apt/sources.list информацию о том, откуда нужно брать файлы для установки R. Для этого, с помощью следующей команды мы откроем нужный файл через текстовый редактор nano. Вы можете использовать другой текстовый редактор, например vim.

sudo nano /etc/apt/sources.list

в открывшемся окне опускаемся в конец документа и добавляем строчку

deb https://cran.rstudio.com/bin/linux/ubuntu xenial/

Добавляем информацию о том, откуда нужно брать файлы для установки R

После этого нажимаем комбинацию Ctrl+X для выхода из редактора. В открывшемся окне вводим “Y” для сохранения изменений.

Окно подтверждения изменений в файле sources list

В последнем окне нажимаем Enter, чтобы записать данные в тот же файл, который мы редактировали.

Подтверждаем запись данных в текстовом редакторе nano

Добавить в apt keyring публичный ключ репозитория CRAN

Ключ используется для удостоверения подлинности и надежности репозитория. И добавляется с помощью следующей команды:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9

которая запрашивает ключ напрямую у сервера сертификации Ubuntu — keyserver.ubuntu.com

Обновить кэш доступных пакетов

Выполняется с помощью команды:

sudo apt update

Установить необходимый пакет с R

Теперь можем установить необходимый нам пакет R с помощью  команды:

sudo apt-get install r-base

В ходе выполнения команды нужно будет подтвердить, что вы готовы установить программное обеспечение с помощью ввода “Y”. Или же можно сразу воспользоваться командой

sudo apt-get install r-base -y

Установка R Studio

Помимо установки R, для удобства работы, нам нужно установить R Studio. И первым делом для этого нужно скачать установочный файл. Делаем это с помощью команды wget

wget https://download2.rstudio.org/rstudio-server-1.0.136-amd64.deb

Теперь, для того, чтобы провести установку R Studio, устанавливаем еще один пакет — gdebi. Gdebi — программа для установки .deb пакетов.

sudo apt-get install gdebi-core -y

И последней командой устанавливаем R Studio со скачанного файла:

sudo gdebi rstudio-server-1.0.136-amd64.deb

Теперь необходимо указать порт, при обращении к которому вы будете получать доступ в R Studio. Для этого нужно внести информацию в файл /etc/rstudio/rserver.conf. Делаем это с помощью команды

sudo nano /etc/rstudio/rserver.conf

и добавляем в файл следующую строку:

www-port=80

После этого задаем пароль для доступа в R Studio командой

sudo passwd user_name

где, вместо user_name используем имя пользователя

Ищем user_name для создания пароля

При вводе пароля вам будет казаться, что ничего не происходит, но на самом деле введенные символы запоминаются. После второго успешного ввода вы увидите примерно следующее:

Установка пароля на сервер с R Studio

Осталось перезапустить серверный R Studio и можно приступать к работе.

sudo service rstudio-server restart

Чтобы попасть в привычный интерфейс R Studio нужно перейти по внешнему адресу:

Чтобы попасть в привычный интерфейс R Studio нужно перейти по внешнему адресу

Скорее всего при входе вы увидите следующую ошибку.

Попытка подключения к серверу при закрытом 443 порте

Связана она с тем, что вы пытаетесь подключиться по протоколу HTTPS, а для работы с R Studio мы открывали 80 порт для протокола HTTP. Убрав в адресной строке лишнюю букву можно заходить.

https://22.222.222.22/ -> http://22.222.222.22/

В открывшемся окне вводим логин и пароль и радуемся виду привычного R Studio, только теперь на сервере.

Окно входа в R Studio server

Установка дополнительных пакетов R на сервере

Скорее всего базовых пакетов R для работы вам будет недостаточно, и дополнительно придется устанавливать другие. Давайте разберем установку таких пакетов на примере “googleAnalyticsR”.

Если вы просто введёте в консоли R команду установки пакета

install.packages("googleAnalyticsR")

, то скорее всего получите вот такую ошибку.

Ошибка при вводе в консоли R команды установки пакета

Чтобы такого не случилось, необходимо дополнительно установить некоторые пакеты Ubuntu. Сделать это можно с помощью следующей команды в консоли сервера.

sudo apt-get install build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev

После этой нехитрой манипуляции выбор остается за вами: можно устанавливать пакеты R стандартным способом в консоли R Studio или же можно все это сделать с консоли Ubuntu. Для последнего нужно ввести команду ниже, которая позволит ввести оболочку R в качестве пользователя root:

sudo -i R

Теперь с консоли Ubuntu мы можем устанавливать пакеты с помощью install.packages() также как и с консоли R Studio.

установка необходимых пакетов с помощью команды install.packages с консоли Ubuntu

Настройка автоматического запуска скриптов

Собственно теперь разберем то, ради чего лично я и ставил R на сервер — автоматический запуск скриптов по расписанию. Для этого будем использовать пакет cronR. Для начала установим пакет и загрузим соответствующую библиотеку.

install.packages("cronR")

library(cronR)

Теперь на вкладке аддоны у нас появился новый аддон “Schedule R scripts on …”

Добавление аддона Schedule R scripts on

При первом запуске у вас появится вот такое окно:

первом запуск аддона Schedule R scripts on

в котором нужно смело нажать “Yes”.

В итоге, после того как установятся все необходимые пакеты вы увидите вот такое окно:

Окно настройки автоматического запуска скрипта по расписанию

В этом окне нужно указать скрипт, запуск которого мы хотим запланировать, а также параметры этого запуска. Мы с вами разберем основные, отмеченные на скриншоте.

  1. Choose your Rscript — в этом пункте выбираем нужный нам скрипт.
  2. Selected Rscript — здесь отобразится скрипт выбранный в пункте один.
  3. Launch date — указываем дату первого запуска скрипта.
  4. Launch hour — соответственно время запуска.
  5. Schedule — настраиваем расписание запуска под свои потребности.
  6. Job description — и не забываем указать описание, чтобы потом не потеряться в огромном количеств запланированных задач.
  7. Кнопка “Create job” — которую нужно нажать в конце, здесь автоматизации еще нет 🙂

На этом с настройкой автоматического запуска скриптов пожалуй все. А хотя, нет. Чтобы увидеть, какие задачи у вас уже запланированы нужно перейти на вкладку “Manage existing jobs”

Как увидеть какие задачи у вас уже запланированы

и кликнуть на кнопку “Show current crontab schedule”:

кнопка Show current crontab schedule - Показать текущие запланированные задачи

В консоли R Studio вы увидите выполнение каких скриптов и на какое время у вас запланировано:

Отображение информации в консоли R Studio о том выполнение каких скриптов и на какое время у вас запланировано

Вот теперь все 😉

Установка локали и решение проблем с кодировкой

Еще одна особенность R с которой вы столкнетесь или возможно уже столкнулись это кодировка и локаль. По умолчанию кодировка в R соответствует настройкам локали. В случае нашего сервера, она будет следующей:

Пример кодировки в R по умолчанию

И, если вам нужно будет её изменить, вы столкнетесь со следующей ошибкой:

Ошибка при изменении локали на сервере с помощью R

Для того чтобы обойти эту ошибку, нужно добавить необходимую локаль в настройки сервера. Сделать это можно в несколько шагов следующим образом:

  • Запускаем команду переустановки языковых пакетов:
sudo dpkg-reconfigure locales

В открывшемся окне выбираем нужный нам, например ru_RU.CP1251 CP1251

Окно переустановки языковых пакетов на сервере Ubuntu

Делаем отметку с помощью нажатия кнопки “Space” и сохраняем изменения.

После этого необходимо перезагрузить сервер с помощью следующей команды:

sudo reboot now

Теперь при настройке локали в R Studio всё отлично работает:

Успешная настройка локали в R Studio

Вместо заключения: R очень мощный язык программирования, который идеально подходит для решения задач связанных со сбором, подготовкой и последующей обработкой данных. С помощью установки R на сервер эти возможности становятся поистине безграничны. А как вы используете R?