Twitter заявил о скором открытии кода системы Storm
6 августа 2011 года
Разработчики сервиса Twitter заявили о решении открыть исходные тексты системы Storm, используемой для анализа больших потоков данных. Код планируется открыть 19 сентября во время проведения конференции Strange Loop. Задержка с открытием кода объясняется необходимостью приведения в порядок документации и подготовке серии руководств для быстрого внедрения системы.
Storm представляет собой распределенную и отказоустойчивую систему обработки неструктурированных постоянно обновляемых потоков данных (обработка сложных событий - Complex Event Processing). Функциональность Storm сравнивается с платформой Hadoop, при этом ключевым отличием является то, что данные обрабатываются в режиме реального времени. В качестве примера использования Storm приводится анализ непрерывных потоков данных, таких как миллионы лент в Twitter.
В отличие от традиционных аналитических систем реального времени от компаний Oracle, StreamBase и SAP, которые предварительно накапливают данные во внутреннем хранилище, в Storm нет встроенной прослойки для организации хранилища, как в Hadoop. В случае Storm пользователь определяет аналитический запрос, который начинает применяться к поступающим данным до тех пор, пока запрос не будет отменен (если в Hadoop используются занимающие конечное время MapReduce-работы, то в Storm применяется идея непрерывно выполняемых "топологий"). При этом выполнение анализа может быть распределено на несколько серверов - Storm автоматически распараллеливает работу с потоками на разные узлы кластера.
Изначально проект Storm развивался компанией BackType, которая была куплена (Архивная копия от 26 мая 2012 на Wayback Machine) Twitter в прошлом месяце. Технология Storm использовалась (Архивная копия от 9 мая 2012 на Wayback Machine) для обеспечения работы сервиса BackTweets, предназначенного для анализа отражения определенных событий в микроблогах, путем сопоставления на лету новых твитов и используемых в них ссылок. Например, компания получала возможность оценить, как внешние ссылки или публикуемые в твиттере анонсы, ретранслируются другими участниками. Несмотря на кажущуюся простоту, для непрерывно поступающих потоков задача является достаточно сложной: чтобы определить число уникальных просмотров URL через Twitter нужно посчитать число сообщений с данным URL, сформировать общую выборку из всех читателей (followers) микроблогов в которых упомянут URL и отсеять среди них дубликаты.
Основные особенности Storm:
- Простая модель программирования, значительно упрощающая обработку данных в режиме реального времени;
- Поддержка любых языков программирования. Сам Storm написан на языке Clojure и выполняется внутри виртуальной машины JVM, но для работы со Storm может быть использован любой язык. Уже созданы модули для языков Ruby и Python, адаптация для других языков не вызывает сложности благодаря очень простому коммуникационному протоколу, для реализации поддержки которого требуется около 100 строк кода;
- Отказоустойчивость: для запуска задания по обработке данных требуется сформировать jar-файл с кодом. Storm самостоятельно распространит данный jar-файл по узлам кластера, подключит связанные с ним обработчики и организует мониторинг. При завершении задания код будет автоматически отключен на всех узлах;
- Горизонтальная масштабируемость. Все вычисления производятся в параллельном режиме, при возрастании нагрузки к кластеру достаточно просто подключить новые узлы;
- Надежность. Storm гарантирует, что каждое поступающее сообщение будет полностью обработано как минимум один раз. Один раз сообщение будет обработано только в случае отсутствия ошибок при прохождении всех обработчиков, если возникли проблемы, то неудачные попытки обработки будут повторены.
- Скорость. Код Storm написан с оглядкой на высокую производительность и использует для быстрого асинхронного обмена сообщениями систему ZeroMQ.
- Области применения:
- Обработка потоков новых данных или обновлений БД в реальном времени.
- Непрерывные вычисления: Storm может выполнять непрерывные запросы и обрабатывать непрерывные потоки, передавая результаты обработки клиенту в режиме реального времени. Например, можно сформировать постоянно обновляемую страницу с наиболее обсуждаемыми темами в Twitter;
- Распределенный удаленный вызов процедур (RPC): Storm может быть использован для обеспечения параллелизма выполнения ресурсоёмких запросов. Задание ("топология") в Storm представляет собой распределенную по узлам функцию, которая ожидает поступления сообщений, которые нужно обработать. После приема сообщения, функция обрабатывает его в локальном контексте и возвращает результат. Примером использования распределенного RPC может быть параллельная обработка поисковых запросов или выполнение операций над большим набором множеств.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.