При работе с большими массивами информации очень часто приходиться использовать язык программирования, в моем случае это язык R, для сбора, подготовки и последующей обработки данных. Сначала, мне вполне хватало desktop версии R-studio, и пакета taskscheduleR для автоматического запуска скриптов на моём компьютере. Но в какой-то момент количество таких скриптов стало большим и все обновления зависели от того, включен ли мой компьютер. В этот момент я и задумался об установке R на сервер. Для своих потребностей я решил использовать сервер в Google Cloud Platform.
Примечание: Справедливости ради, стоит сказать, что во время установки R на сервер Google Cloud Platform и поисков информации о том, как это сделать, я наткнулся на статью в блоге Netpeak, в которой рассказано как сделать подобное, но при работе с этой статьей у меня все равно возникли сложности, о которых не говорилось в статье.
Итак, о чем мы поговорим:
- Создание виртуальной машины в Google Cloud Platform (GCP).
- Установка R и R Studio на сервер Google Cloud Platform.
- Установка дополнительных пакетов на сервере.
- Настройка автоматического запуска скриптов.
- Установка локали и решение проблем с кодировкой.
Создание виртуальной машины в Google Cloud Platform
Если вы решили создать сервер на Google Cloud Platform, то первым делом нужно подобрать и настроить для этих целей виртуальную машину. И здесь Google предоставляет огромный выбор, а ко всему и бесплатный тестовый период равный одному году.
Если вы первый раз используете GCP в своей работе, то перед тем, как приступать к созданию экземпляра виртуальной машины необходимо создать проект, и включить биллинг. Даже если вы используете бесплатный тестовый период, все равно нужно будет привязать свою карту. Денег при этом Google обязуется не снимать 😉 Карта всего лишь подтверждает, что вы реальный человек.
Теперь, когда с формальностями покончено, давайте приступим.
Переходим в консоль GCP на страницу виртуальных машин и выбираем пункт “Create instance”
В открывшемся окне задаем нужные нам параметры:
- 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). Он шифрует весь трафик, включая и передаваемые пароли. Для этого достаточно кликнуть на соответствующий пункт в меню:
И в новом окне браузера откроется… Матрица ))
Первое что я подумал, увидев это окно “вот она матрица”. Но пообщавшись с программистами и узнав у них некоторые детали, я понял, что это все не так страшно и сейчас вы в этом убедитесь.
Интересно: В большинстве команд, которые мы дальше будем использовать в начале будет указана команда “sudo”, которая позволяет запускать команды от имени суперпользователя root.
Необходимо понимать, что помимо главного репозитория, содержащего все пакеты от разработчиков дистрибутива Ubuntu, существует и масса других источников пакетов. Одним из таких является пакет R. Добавление такого стороннего пакета происходит в 4 этапа:
- Нужно добавить ссылку на репозиторий в файл /etc/apt/sources.list.
- Добавить в apt keyring публичный ключ репозитория.
- Обновить кэш доступных пакетов
- Установить необходимый пакет.
А теперь подробнее о каждом из этих пунктов:
Добавить ссылку на репозиторий 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/
После этого нажимаем комбинацию Ctrl+X для выхода из редактора. В открывшемся окне вводим “Y” для сохранения изменений.
В последнем окне нажимаем Enter, чтобы записать данные в тот же файл, который мы редактировали.
Добавить в 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 используем имя пользователя
При вводе пароля вам будет казаться, что ничего не происходит, но на самом деле введенные символы запоминаются. После второго успешного ввода вы увидите примерно следующее:
Осталось перезапустить серверный R Studio и можно приступать к работе.
sudo service rstudio-server restart
Чтобы попасть в привычный интерфейс R Studio нужно перейти по внешнему адресу:
Скорее всего при входе вы увидите следующую ошибку.
Связана она с тем, что вы пытаетесь подключиться по протоколу HTTPS, а для работы с R Studio мы открывали 80 порт для протокола HTTP. Убрав в адресной строке лишнюю букву можно заходить.
https://22.222.222.22/ -> http://22.222.222.22/
В открывшемся окне вводим логин и пароль и радуемся виду привычного R Studio, только теперь на сервере.
Установка дополнительных пакетов R на сервере
Скорее всего базовых пакетов R для работы вам будет недостаточно, и дополнительно придется устанавливать другие. Давайте разберем установку таких пакетов на примере “googleAnalyticsR”.
Если вы просто введёте в консоли R команду установки пакета
install.packages("googleAnalyticsR")
, то скорее всего получите вот такую ошибку.
Чтобы такого не случилось, необходимо дополнительно установить некоторые пакеты 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.
Настройка автоматического запуска скриптов
Собственно теперь разберем то, ради чего лично я и ставил R на сервер — автоматический запуск скриптов по расписанию. Для этого будем использовать пакет cronR. Для начала установим пакет и загрузим соответствующую библиотеку.
install.packages("cronR") library(cronR)
Теперь на вкладке аддоны у нас появился новый аддон “Schedule R scripts on …”
При первом запуске у вас появится вот такое окно:
в котором нужно смело нажать “Yes”.
В итоге, после того как установятся все необходимые пакеты вы увидите вот такое окно:
В этом окне нужно указать скрипт, запуск которого мы хотим запланировать, а также параметры этого запуска. Мы с вами разберем основные, отмеченные на скриншоте.
- Choose your Rscript — в этом пункте выбираем нужный нам скрипт.
- Selected Rscript — здесь отобразится скрипт выбранный в пункте один.
- Launch date — указываем дату первого запуска скрипта.
- Launch hour — соответственно время запуска.
- Schedule — настраиваем расписание запуска под свои потребности.
- Job description — и не забываем указать описание, чтобы потом не потеряться в огромном количеств запланированных задач.
- Кнопка “Create job” — которую нужно нажать в конце, здесь автоматизации еще нет 🙂
На этом с настройкой автоматического запуска скриптов пожалуй все. А хотя, нет. Чтобы увидеть, какие задачи у вас уже запланированы нужно перейти на вкладку “Manage existing jobs”
и кликнуть на кнопку “Show current crontab schedule”:
В консоли R Studio вы увидите выполнение каких скриптов и на какое время у вас запланировано:
Вот теперь все 😉
Установка локали и решение проблем с кодировкой
Еще одна особенность R с которой вы столкнетесь или возможно уже столкнулись это кодировка и локаль. По умолчанию кодировка в R соответствует настройкам локали. В случае нашего сервера, она будет следующей:
И, если вам нужно будет её изменить, вы столкнетесь со следующей ошибкой:
Для того чтобы обойти эту ошибку, нужно добавить необходимую локаль в настройки сервера. Сделать это можно в несколько шагов следующим образом:
- Запускаем команду переустановки языковых пакетов:
sudo dpkg-reconfigure locales
В открывшемся окне выбираем нужный нам, например ru_RU.CP1251 CP1251
Делаем отметку с помощью нажатия кнопки “Space” и сохраняем изменения.
После этого необходимо перезагрузить сервер с помощью следующей команды:
sudo reboot now
Теперь при настройке локали в R Studio всё отлично работает:
Вместо заключения: R очень мощный язык программирования, который идеально подходит для решения задач связанных со сбором, подготовкой и последующей обработкой данных. С помощью установки R на сервер эти возможности становятся поистине безграничны. А как вы используете R?