В завершающем обзоре облачных сервисов компании Amazon рассмотрим тематику, наиболее приближенную к бизнес-интересам любой компании, — аналитические механизмы. Парадоксально, но с одной стороны, облачная аналитика Amazon отлично развита и мультифункциональна, а с другой — порог вхождения в эти технологии весьма высок. Причина тому — в отсутствии каких-либо средств визуализации результатов анализа, что, впрочем, естественно: облачные сервисы предназначены для удаленных вычислений, а клиентская функциональность традиционно отдается на откуп третьим фирмам, которые, кстати, могут на этом неплохо заработать.
Прямым бизнес-потребностям организаций наиболее близки два главных аналитических сервиса Amazon, к которым стоит добавить обновленную в феврале 2014 г. услугу облачной платформы на базе языка R. Первый из этих сервисов, Elastic MapReduce (EMR), представляет собой облачную реализацию популярной платформы распределенных вычислений Hadoop, которая весьма трудна в развертывании и накладна в сопровождении на собственных ресурсах. Второй сервис — это Kinesis, обработка в реальном времени потоков больших данных от разных источников (например, генерируемых программами с виртуальных серверов EC2).
Одноразовые кластеры Hadoop
Важная особенность сервиса EMR, отличающая его от иных вычислительных услуг Amazon, — своеобразная “одноразовость”. EMR подразумевает создание и подробную настройку кластера MapReduce под одну конкретную задачу. Вместо кластера скорее подошёл бы термин “задача” или “вычислительный процесс”, однако Amazon предпочла использовать вариант, более приближенный к физической реализации. Возможно, этот подход будет понятнее Hadoop-разработчикам.
Создание кластера EMR в дополнение к типовым настройкам (название, каталог S3 для ведения лога, вывод отладочной информации) подразумевает также выбор версии Hadoop (поддерживаются ключевые версии 1.3 и 2.2 дистрибутива Amazon) или вариант от MapR. По умолчанию устанавливаются также хранилище данных Hive и движок запросов Pig, имеется возможность дополнительно инсталлировать NoSQL СУБД HBase и службу мониторинга Ganglia. Пользователь указывает аппаратную конфигурацию кластера — тип мастер-сервера, тип и количество узлов, хранящих данные и выполняющих задачи Hadoop (рис. 1).
Ключевой момент при создании кластера — выбор задачи, которую он будет выполнять. Вычислительные задачи платформа Hadoop исполняет только в пакетном режиме, чем и объясняется “одноразовость” данного сервиса Amazon. Задача для запуска на кластере должна быть заранее подготовлена в соответствии со стандартными требованиями Hadoop MapReduce с использованием любой из множества подходящих технологий (Java, Hive, Pig, Ruby, Perl, Python, R, PHP, C++) и размещена, например, в хранилище S3, откуда она и будет загружена в облачный кластер на исполнение. Кластер стартует автоматически сразу после создания (этот процесс занимает считанные минуты).
В процессе счёта из консоли EMR можно следить за ходом выполнения задачи, а “завершившийся” (Terminated) кластер остается в списке консоли в качестве напоминания, удалить его из списка нельзя. Чтобы не путаться, каждый кластер можно снабдить оригинальным набором тегов.
Результаты исполнения задачи, как правило, размещаются в каталогах S3 в виде итоговых файлов. Отработавший кластер всегда можно клонировать кнопкой Clone — создать его исходную копию со всеми настройками, заменив лишь входные параметры, и вновь запустить задачу на исполнение.
Стоимость вычислений на платформе Hadoop зависит от размера кластера, количества узлов в нем и наличия повышенного объема ОЗУ или особо мощных процессоров и составляет от 0,1 до 4 долл. в час на узел. Кроме того, придётся оплачивать содержание в службе S3 данных, которые кластер EMR обрабатывает. Обычно это “большие” данные, поэтому и стоимость хранения соответствующих терабайтов информации может дополнительно обходиться в сотни долларов в месяц.
Kinesis — платформа без аналитики
Надо отметить, что Kinesis — это не вычислительный движок, который непосредственно выполняет те или иные аналитические функции над данными (в отличие от EMR), а только платформа, обеспечивающая хранение, загрузку и представление информации для внешних счётных алгоритмов и бизнес-приложений клиента. Но если сервис EMR ориентирован на пакетное выполнение вычислений, то Kinesis решает противоположные задачи — анализирует данные в реальном времени (точнее, предоставляет их анализирующим программам пользователей) в объёмах до сотен терабайтов в час, поступающих из тысяч источников. По этой причине и архитектура Kinesis сильно отличается от Hadoop.
Сервис Kinesis основывается на понятии потока данных, который концептуально ближе всего к СУБД (как сервис хранения и поставки информации). Этот поток логически разделяется на “кусочки” или “шарды” (shards) — своеобразные внутренние “серверы”, каждый из которых поддерживает до пяти транзакций в секунду на считывание и до тысячи на запись с ограничением передачи данных за это время в объёме 1—2 Мб.
Работа с Kinesis начинается с формирования потока данных, для которого нужное число “шардов” рассчитывается автоматически с помощью встроенного в консоль калькулятора в зависимости от интенсивности поступающей информации (рис. 2). В дальнейшем этот поток можно динамически масштабировать. Доступ к сервису осуществляется программными вызовами с помощью специальной клиентской библиотеки, которая поддерживает Java, хотя несложно найти открытые реализации, например, для .NET. Через программный интерфейс этой библиотеки пользователь настраивает поставщики данных для потока — информация “вталкивается” в поток командой PutRecord. Клиентская библиотека и Kinesis API содержат все функции, необходимые для управления балансировкой, мониторингом нагрузки, потоком взаимодействия с “шардами”, позволяя сосредоточиться на реализации аналитической бизнес-логики “прогоняемых” потоком данных.
Стоимость эксплуатации одного “шарда” составляет 0,015 долл. в час, и дополнительно за каждый миллион транзакций надо выплатить 0,028 долл.
R — значит Revolution
В дополнение к собственным стандартным сервисам Amazon предлагает коммерческие расширения от компаний-партнеров. Так, в середине февраля 2014 г. заработала услуга AWS Revolution R, которая предлагает хостинг системы параллельного программирования Revolution R Enterprise 7 на языке R для научных и статистических вычислений. В качестве источников данных для анализа могут быть задействованы хранилища S3 и РСУБД RDS. Например, прогнозный анализ справляется с входными данными объёмом до терабайта, а для больших задач рекомендовано развернуть приватное облако. AWS Revolution R масштабируется до 32 виртуальных узлов и может работать как в Linux, так и в Windows.
Развертывание сервиса выполняется парой щелчков мыши (рис. 3): выбирается мощность виртуального сервера EC2 для хостинга, и после того, как он спустя несколько минут автоматически запустится, к нему можно подключаться — скажем, через RDP-протокол (рис. 4). На рабочем столе уже будут размещены ярлыки интегрированной среды Revolution R Enterprise 7, которыми она и запускается в эксплуатацию (рис. 5). Правда, цены на сервис “кусаются”: от 2,86 до 22,97 долл. в час в зависимости от конфигурации сервера EC2. Впрочем, сам продукт тоже не из дешёвых: за одну инсталляцию на рабочую станцию надо будет заплатить от 4,5 до 10 тыс. долл.