Apache Storm - кластерная архитектура
Одним из главных достоинств Apache Storm является то, что это отказоустойчивое, быстрое распределенное приложение без единой точки отказа (SPOF). Мы можем установить Apache Storm в любом количестве систем, чтобы увеличить емкость приложения.
Давайте посмотрим, как устроен кластер Apache Storm и его внутреннюю архитектуру. На следующей диаграмме изображена конструкция кластера.
Apache Storm имеет два типа узлов: Nimbus (главный узел) и Supervisor(рабочий узел). Nimbus - центральный компонент Apache Storm. Основная задача Nimbus - запуск топологии Storm. Nimbus анализирует топологию и собирает задачи для выполнения. Затем он передаст задачу доступному супервизору.
У супервизора будет один или несколько рабочих процессов. Супервизор делегирует задачи рабочим процессам. Рабочий процесс порождает столько исполнителей, сколько необходимо, и запускает задачу. Apache Storm использует внутреннюю распределенную систему обмена сообщениями для связи между нимбом и супервизорами.
Составные части | Описание |
---|---|
Нимбус | Nimbus - главный узел кластера Storm. Все остальные узлы в кластере называютсяworker nodes. Главный узел отвечает за распределение данных между всеми рабочими узлами, назначение задач рабочим узлам и мониторинг сбоев. |
Руководитель | Узлы, которые следуют инструкциям нимба, называются супервизорами. Аsupervisor имеет несколько рабочих процессов и управляет рабочими процессами для выполнения задач, назначенных нимбом. |
Рабочий процесс | Рабочий процесс будет выполнять задачи, относящиеся к определенной топологии. Рабочий процесс не будет запускать задачу сам по себе, вместо этого он создаетexecutorsи просит их выполнить определенную задачу. У рабочего процесса будет несколько исполнителей. |
Исполнитель | Исполнитель - это не что иное, как единственный поток, порожденный рабочим процессом. Исполнитель выполняет одну или несколько задач, но только для определенного носика или болта. |
Задача | Задача выполняет фактическую обработку данных. Значит, это либо носик, либо болт. |
Фреймворк ZooKeeper | Apache ZooKeeper - это служба, используемая кластером (группой узлов) для координации между собой и поддержания общих данных с помощью надежных методов синхронизации. Nimbus не имеет состояния, поэтому ZooKeeper может контролировать состояние рабочего узла. ZooKeeper помогает супервизору взаимодействовать с нимбом. Он отвечает за поддержание состояния венчика и супервизора. |
Шторм по своей природе не имеет гражданства. Несмотря на то, что природа без сохранения состояния имеет свои недостатки, на самом деле она помогает Storm обрабатывать данные в реальном времени самым лучшим и быстрым способом.
Однако Storm не совсем апатрид. Он хранит свое состояние в Apache ZooKeeper. Поскольку состояние доступно в Apache ZooKeeper, отказавший нимб можно перезапустить и заставить работать с того места, где он остался. Обычно инструменты мониторинга сервисов, такие какmonit будет отслеживать Nimbus и перезапускать его в случае сбоя.
Apache Storm также имеет расширенную топологию, называемую Trident Topologyс обслуживанием состояния, а также предоставляет высокоуровневый API, такой как Pig. Мы обсудим все эти особенности в следующих главах.