The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Twitter заявил о скором открытии кода системы Storm

06.08.2011 13:16

Разработчики сервиса 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, которая была куплена Twitter в прошлом месяце. Технология Storm использовалась для обеспечения работы сервиса 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 может быть параллельная обработка поисковых запросов или выполнение операций над большим набором множеств.


    1. Главная ссылка к новости (http://engineering.twitter.com...)
    2. OpenNews: Проект Twitter представил раздел, посвященный своим открытым разработкам
    3. OpenNews: Часть Twitter переводят с языка Ruby на Scala
    4. OpenNews: Google разрешил проекту Hadoop использовать свои патенты, связанные с MapReduce
    5. OpenNews: Yahoo закрывает собственный Hadoop-дистрибутив и фокусирует внимание на Apache Hadoop
    6. OpenNews: Проекту Apache Hadoop присуждена премия новатор года
    Лицензия: CC BY 3.0
    Короткая ссылка: https://opennet.ru/31414-storm
    Ключевые слова: storm, database
    При перепечатке указание ссылки на opennet.ru обязательно


    Обсуждение (9) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 14:09, 06/08/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    > ZeroMQ

    Эрлангисты в пролёте.

     
     
  • 2.2, all_glory_to_the_hypnotoad (ok), 14:32, 06/08/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    чем в пролёте?
     
  • 2.9, Crazy Alex (ok), 02:00, 07/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Собственно, если у них реальное время, параллельная обработка в кластере, Closure (т.е. функциональный язык), ZeroMQ и автоматическое обновление кода - то действительно остаётся только удивляться, почему не Erlang - это для него просто классические условия из учебника.
     
     
  • 3.12, Michael Shigorin (ok), 16:11, 07/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Собственно, если у них реальное время, параллельная обработка в кластере, Closure (т.е.
    > функциональный язык), ZeroMQ и автоматическое обновление кода - то действительно остаётся
    > только удивляться, почему не Erlang - это для него просто классические
    > условия из учебника.

    BTW интересно кому пообщаться с разработчиками Erlang?  Около осенней конференции OSDN (октябрь, Киев) может получиться, если вдруг многим.

     
     
  • 4.13, Crazy Alex (ok), 22:28, 07/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    мне интересно было бы
     
     
  • 5.14, Michael Shigorin (ok), 01:24, 08/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > мне интересно было бы

    Общаемся с коллегами, надеюсь скоро уж анонсировать конференцию.

     
  • 5.20, Michael Shigorin (ok), 19:33, 21/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Мужики из Erlang Solutions сделают два доклада 1 октября на конференции OSDN:
    http://conference.osdn.org.ua/ru/report/list/
    и проведут бесплатный четырёхчасовой ознакомительный семинар на следующий день:
    http://conference.osdn.org.ua/ru/about/
     
  • 2.15, Sw00p aka Jerom (?), 01:29, 08/08/2011 [^] [^^] [^^^] [ответить]  
  • +/
    вся прелесть эрлангистов в том что и рас плюнуть написать библиотечку

    пс: зря вы недооцениваете эрланг

     

  • 1.17, Аноним (-), 13:00, 08/08/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что-то не могу отгуглить какой мат.бэкграунд использовался. Верифицировали ли на предмет отсутствия гонок и дедлоков?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру