Все, что вам нужно знать об Apache Storm

Опубликовано: 2018-02-20

Постоянно растущий рост производства и аналитики больших данных ставит новые задачи, и специалисты по данным и программисты изящно справляются с этим, постоянно совершенствуя разработанные ими приложения. Одной из таких проблем была потоковая передача в реальном времени. Данные в режиме реального времени имеют чрезвычайно высокую ценность для бизнеса, но у них есть временное окно, по истечении которого они теряют свою ценность — срок годности, если хотите. Если значение этих данных в реальном времени не реализовано в окне, из них невозможно извлечь полезную информацию. Эти данные в режиме реального времени поступают быстро и непрерывно, поэтому используется термин «потоковая передача».

Аналитика этих данных в режиме реального времени может помочь вам быть в курсе того, что происходит прямо сейчас, например, количество людей, читающих ваш пост в блоге, или количество людей, посещающих вашу страницу в Facebook. Хотя это может звучать как «хорошо иметь» функцию, на практике это необходимо. Представьте, что вы являетесь частью рекламного агентства, выполняющего аналитику ваших рекламных кампаний в режиме реального времени, за которую клиент дорого заплатил. Аналитика в режиме реального времени может держать вас в курсе того, как ваша реклама работает на рынке, как пользователи реагируют на нее и другие подобные вещи. Довольно важный инструмент, если вы думаете об этом таким образом, верно?

Глядя на ценность данных в реальном времени, организации начали придумывать различные инструменты для анализа данных в реальном времени. В этой статье мы поговорим об одном из них — Apache Storm. Мы рассмотрим, что это такое, архитектуру типичного штормового приложения, его основные компоненты (также известные как абстракции) и варианты его использования в реальной жизни.

Поехали!

Оглавление

Что такое Apache Storm?

Апач Шторм
Apache Storm, выпущенный Twitter, представляет собой распределенную платформу с открытым исходным кодом, которая помогает обрабатывать данные в режиме реального времени. Apache Storm работает с данными в реальном времени точно так же, как Hadoop работает с пакетной обработкой данных (пакетная обработка противоположна реальному времени. В этом случае данные делятся на пакеты, и каждый пакет обрабатывается. Это не делается в реальном времени). -время.)

Apache Storm не имеет каких-либо возможностей управления состоянием и в значительной степени полагается на Apache ZooKeeper (централизованная служба для управления конфигурациями в приложениях больших данных) для управления состоянием своего кластера — такими вещами, как подтверждения сообщений, статусы обработки и другие подобные сообщения. Приложения Apache Storm разработаны в виде ориентированных ациклических графов. Он известен тем, что обрабатывает более одного миллиона кортежей в секунду на узел, что обеспечивает высокую масштабируемость и гарантирует обработку заданий. Storm написан на Clojure, похожем на Lisp языке функционального программирования.

В основе Apache Storm лежит «бережливое определение» для определения и отправки логического графа (также известного как топология). Поскольку Thrift может быть реализован на любом языке по вашему выбору, топологии также могут быть созданы на любом языке. Благодаря этому Storm поддерживает множество языков, что делает его еще более удобным для разработчиков.

Storm работает на YARN и отлично интегрируется с экосистемой Hadoop. Это настоящая среда обработки данных в реальном времени с нулевой пакетной поддержкой. Он принимает полный поток данных как целое «событие», а не разбивает его на серию небольших пакетов. Следовательно, он лучше всего подходит для данных, которые должны приниматься как единое целое.

Давайте взглянем на общую архитектуру приложения Storm — это даст вам больше информации о том, как работает Storm!

Apache Storm: общая архитектура и важные компоненты

Апач Шторм
По сути, в любом приложении Storm задействованы два типа узлов (как показано выше).

  • Мастер-узел (сервис Nimbus)

Если вы знаете о внутренней работе Hadoop, вы должны знать, что такое «Отслеживание заданий». Это демон, который работает на главном узле Hadoop и отвечает за распределение задач между узлами. Nimbus — аналогичный сервис для Storm. Он работает на главном узле кластера Storm и отвечает за распределение задач между рабочими узлами.

Nimbus — это сервис Thrift, предоставляемый Apache, который позволяет вам отправлять код на выбранном вами языке программирования. Это поможет вам написать приложение без необходимости изучения нового языка специально для Storm.

Как мы говорили ранее, в Storm отсутствуют какие-либо возможности управления состоянием. Служба Nimbus должна полагаться на ZooKeeper для отслеживания сообщений, отправляемых рабочими узлами при обработке задач. Все рабочие узлы обновляют статус своих задач в службе ZooKeeper, чтобы Nimbus мог видеть и отслеживать.

  • Рабочий узел (служба супервизора)

Это узлы, отвечающие за выполнение задач. Рабочие узлы в Storm запускают службу под названием Supervisor. Супервайзер отвечает за получение работы, назначенной машине службой Nimbus. Как следует из названия, Supervisor наблюдает за рабочими процессами и помогает им выполнять поставленные задачи. Каждый из этих рабочих процессов выполняет подмножество полной топологии.

Приложение Storm состоит из четырех компонентов/абстракций, отвечающих за выполнение поставленных задач. Эти:

Апач Шторм

  • Топология

    Логика любого приложения реального времени упакована в виде топологии, которая, по сути, представляет собой сеть болтов и патрубков. Чтобы лучше понять, вы можете сравнить его с заданиями MapReduce (прочитайте нашу статью о MapReduce, если вы не знаете, что это такое!). Одним из ключевых отличий является то, что задание MapReduce завершается, когда его выполнение завершено, тогда как топология Storm выполняется вечно (если только вы не уничтожите ее самостоятельно). Сеть состоит из узлов, которые формируют логику обработки, и связей (также известных как поток), которые демонстрируют передачу данных и выполнение процессов.

  • Поток

    Вам нужно понять, что такое кортежи, прежде чем понять, что такое потоки. Кортежи — это основные структуры данных в кластере Storm. Это именованные списки значений, где значения могут быть любыми: от целых, длинных, коротких, байтов, удвоений, строк, логических чисел с плавающей запятой до массивов байтов. Теперь .streams — это последовательность кортежей, которые создаются и обрабатываются в режиме реального времени в распределенной среде. Они образуют основную единицу абстракции кластера Spark.

  • Носик

    Росток — это источник потоков в кортеже Storm. Он отвечает за связь с фактическим источником данных, непрерывный прием данных, преобразование этих данных в фактический поток кортежей и, наконец, отправку их болтам для обработки. Он может быть как надежным, так и ненадежным. Надежный Spout воспроизведет кортеж, если он не будет обработан Storm, ненадежный Spout, с другой стороны, забудет о кортеже вскоре после его отправки.

  • Болт

    Болты отвечают за выполнение всей обработки топологии. Они формируют логический блок обработки приложения Storm. Bolt можно использовать для выполнения многих важных операций, таких как фильтрация, функции, объединения, агрегации, подключение к базам данных и многое другое.

Кто использует Шторм?

Хотя на рынке больших данных присутствует ряд мощных и простых в использовании инструментов, Storm занимает уникальное место в этом списке благодаря своей способности работать с любым языком программирования, который вы ему предложите. Многие организации используют Storm.

Давайте посмотрим на пару крупных игроков, которые используют Apache Storm и как!

  • Твиттер

логотип твиттера
Twitter использует Storm для поддержки различных своих систем — от персонализации вашей ленты, оптимизации доходов до улучшения результатов поиска и других подобных процессов. Поскольку Twitter разработал Storm (который позже был куплен Apache и назван Apache Storm), он легко интегрируется с остальной инфраструктурой Twitter — системами баз данных (Cassandra, Memcached и т. д.), средой обмена сообщениями (Mesos) и системами мониторинга. .

  • Спотифай

логотип спотифай
Spotify известен потоковой передачей музыки более чем 50 миллионам активных пользователей и 10 миллионам подписчиков. Он предоставляет широкий спектр функций в реальном времени, таких как рекомендации по музыке, мониторинг, аналитика, таргетинг рекламы и создание списков воспроизведения. Для достижения этой цели Spotify использует Apache Storm.
Apache Storm, сочетающий в себе среду обмена сообщениями на основе Kafka, Memcached и netty-zmtp, позволяет Spotify легко создавать отказоустойчивые распределенные системы с малой задержкой.

Обернуть…

Если вы хотите построить свою карьеру в качестве аналитика больших данных, потоковая передача — это то, что вам нужно. Если вы сможете овладеть искусством работы с данными в режиме реального времени, вы будете предпочтительным выбором для компаний, нанимающих на роль аналитика. Лучшего времени для того, чтобы погрузиться в анализ данных в реальном времени, быть не может, потому что это потребность часа в прямом смысле этого слова!

Если вам интересно узнать больше о больших данных, ознакомьтесь с нашей программой PG Diploma в области разработки программного обеспечения со специализацией в области больших данных, которая предназначена для работающих профессионалов и включает более 7 тематических исследований и проектов, охватывает 14 языков и инструментов программирования, практические занятия. семинары, более 400 часов интенсивного обучения и помощь в трудоустройстве в ведущих фирмах.

Изучайте степени по программной инженерии онлайн в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Возглавьте технологическую революцию, основанную на данных

Расширенная программа сертификации в области больших данных от IIIT Bangalore