Где и как в Big Data используется Apache Storm: примеры применения

Apache Storm, Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop, Kafka

Apache Storm (Сторм, Шторм) часто употребляется в контексте других BigData инструментов для распределенных потоковых вычислений в реальном времени (Real Time, RT): Spark Streaming, Kafka Streams, Flink и Samza. Однако, если Apache Spark и Flink по функциональным возможностям и составу компонентов еще могут конкурировать между собой, то сравнивать с ними Шторм, предназначенный только для относительно простой по логике распределенной обработки потоковых событий, не совсем объективно. Более целесообразно выбирать между Сторм и Apache Samza, что мы рассмотрим в нашей следующей статье. А сегодня поговорим о том, где используется Apache Storm и в каких случаях следует применять именно этот Big Data фреймворк потоковых RT-вычислений.

Apache Storm – Hadoop для потоков Big Data

Чтобы понять, где стоит использовать Шторм, следует вспомнить историю его появления. Storm часто называют Hadoop в мире потоковой обработки Big Data. Apache Hadoop создан для обработки огромного количества данных распределенным способом на обычных аппаратных средствах, но не в реальном времени. Задача MapReduce требует большого дискового пространства: каждый раз при выполнении она извлекает данные с диска, обрабатывает их в памяти и затем записывает обратно на диск, после чего завершается. Для следующей партии данных будет создана новая задача, и весь цикл повторится снова.

В реальном времени информация будет поступать непрерывно, поэтому необходимо параллельно и быстро в распределенном режиме без потери данных получать их, обрабатывать их и продолжать записывать результаты. Именно для этого и был разработан Apache Storm [1].

Отметим, что именно Сторм входит в состав коммерческих дистрибутивов Apache Hadoop от MapR и HortonWorks. Также Apache Storm является основой для S4 – собственной модели обработки событий компании Yahoo!. Однако, Шторм обеспечивает гарантированную обработку сообщений в случае отказов, тогда как S4 может терять сообщения. Для достижения максимальной производительности обмена сообщениями напрямую между задачами, исключая промежуточные очереди, Storm использует оригинальный механизм ZeroMQ, который обнаруживает заторы и изменяет сообщения для оптимизации пропускной способности кластера [2].

топология Apache Storm
Как работает топология Apache Storm

Да будет Шторм: кто, когда и почему выбирает этот фреймворк

Итак, Storm будет отличным выбором для реализации высокоскоростной системы обработки событий, обеспечивающей инкрементные вычисления, в т.ч. по требованию. Однако, если в рамках Шторм необходимо обеспечить сохранение состояния (stateful) и в точности однократную доставку сообщений (exactly once), следует использовать Trident API, который позволяет работать с микропакетами, как Apache Spark.

На практике Apache Storm используется в Big Data системах следующих компаний: Twitter, Yahoo!, Spotify, The Weather Channel, Groupon [3]. Также Сторм хорошо работает в IoT-платформах, например, в качестве простой системы оповещения о событиях по аналогии с Apache Kafka Streams. Таким образом, Шторм хорошо подходит для относительно простых задач потоковой обработки Big Data, но из-за отсутствия гибких возможностей реализации сложной бизнес-логики он не способен заменить собой Apache Spark, Flink и Kafka Streams [4]. В частности, одна из крупнейших ecommerce-платформ, китайская компания Taobao отмечает, что основной проблемой при обработке большого набора данных в режиме реального времени с помощью Шторм является сохранение состояний и результатов. Taobao использует Сторм для анализа статистической информации (логов) следующим образом [5]:

  • журналы логов считываются из постоянных Kafka-подобных очередей сообщений в носители данных,
  • затем обрабатываются и передаются по топологиям Сторм для вычисления желаемых результатов,
  • полученные результаты сохраняются в распределенных базах данных для последующего использования. Количество входных журналов варьируется от 2 миллионов до 1,5 миллиарда каждый день, размер которых составляет до 2 терабайт.

Аналогичным способом Apache Storm используется в компаниях Metamarkets, Impetus Technologies, Wize Commerce, Baidu, Alibaba, Flipboard и множестве других бизнесов по всему миру [5].

use cases Apache Storm, примеры применения Апач Шторм (Сторм)
Некоторые примеры применения (use cases) Apache Storm

Узнайте больше о потоковой обработке больших данных в режиме реального времени на наших специализированных курсах для руководителей, архитекторов, инженеров, администраторов, аналитиков Big Data и Data Scientist’ов в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

Источники

  1. http://why-not-learn-something.blogspot.com/2015/12/apache-storm-introduction.html
  2. https://www.ibm.com/developerworks/ru/library/os-twitterstorm/index.html
  3. http://datareview.info/article/obrabotka-potokovyx-dannyx-storm-spark-i-samza
  4. https://medium.com/@chandanbaranwal/spark-streaming-vs-flink-vs-storm-vs-kafka-streams-vs-samza-choose-your-stream-processing-91ea3f04675b
  5. http://storm.apache.org/Powered-By.html