Одним из главных достоинств Apache Storm является то, что он является отказоустойчивым и быстрым без распределенного приложения «Single Point of Failure» (SPOF). Мы можем установить Apache Storm на столько систем, сколько необходимо для увеличения емкости приложения.
Давайте посмотрим, как спроектирован кластер Apache Storm и его внутренняя архитектура. Следующая диаграмма изображает дизайн кластера.
Apache Storm имеет два типа узлов: Nimbus (главный узел) и Supervisor (рабочий узел). Нимб является центральным компонентом Apache Storm. Основная задача Nimbus — запуск топологии Storm. Nimbus анализирует топологию и собирает задачу для выполнения. Затем он распространит задачу среди доступного руководителя.
У супервайзера будет один или несколько рабочих процессов. Руководитель делегирует задачи рабочим процессам. Рабочий процесс порождает столько исполнителей, сколько необходимо и запускает задачу. Apache Storm использует внутреннюю распределенную систему обмена сообщениями для связи между нимбомом и супервизорами.
Компоненты | Описание |
---|---|
нимб | Nimbus — главный узел кластера Storm. Все остальные узлы в кластере называются рабочими узлами . Главный узел отвечает за распределение данных между всеми рабочими узлами, назначение задач рабочим узлам и мониторинг сбоев. |
Руководитель | Узлы, которые следуют инструкциям, данным нимбом, называются супервизорами. Супервизор имеет несколько рабочих процессов и управляет рабочими процессами для выполнения задач, назначенных нимбом. |
Рабочий процесс | Рабочий процесс будет выполнять задачи, связанные с определенной топологией. Рабочий процесс не будет запускать задачу сам по себе, вместо этого он создает исполнителей и просит их выполнить определенную задачу. Рабочий процесс будет иметь несколько исполнителей. |
душеприказчик | Исполнитель — не что иное, как единственный поток, порожденный рабочим процессом. Исполнитель выполняет одну или несколько задач, но только для определенного излива или затвора. |
задача | Задача выполняет фактическую обработку данных. Итак, это либо носик, либо болт. |
ZooKeeper Framework |
Apache ZooKeeper — это сервис, используемый кластером (группой узлов) для координации между собой и поддержания общих данных с помощью надежных методов синхронизации. Nimbus не имеет состояния, поэтому от ZooKeeper зависит состояние рабочего узла. ZooKeeper помогает руководителю взаимодействовать с нимбом. Он отвечает за поддержание состояния нимба и супервайзера. |
Apache ZooKeeper — это сервис, используемый кластером (группой узлов) для координации между собой и поддержания общих данных с помощью надежных методов синхронизации. Nimbus не имеет состояния, поэтому от ZooKeeper зависит состояние рабочего узла.
ZooKeeper помогает руководителю взаимодействовать с нимбом. Он отвечает за поддержание состояния нимба и супервайзера.
Шторм без гражданства по своей природе. Несмотря на то, что природа без сохранения состояния имеет свои недостатки, она на самом деле помогает Storm обрабатывать данные в реальном времени самым лучшим и быстрым способом.
Шторм не совсем без гражданства, хотя. Он хранит свое состояние в Apache ZooKeeper. Поскольку состояние доступно в Apache ZooKeeper, сбойный нимб можно перезапустить и заставить работать с того места, где он ушел. Обычно такие сервисные инструменты мониторинга, как monit , отслеживают Nimbus и перезапускают его в случае сбоя.
Apache Storm также имеет продвинутую топологию, называемую топологией Trident, с поддержкой состояний и предоставляет высокоуровневый API, такой как Pig. Мы обсудим все эти функции в следующих главах.