Architecture du cluster Apache Storm
Le principal point fort d'Apache Storm est qu'il s'agit d'une application distribuée tolérante aux pannes, rapide et sans « point de défaillance unique » (SPOF). Nous pouvons installer Apache Storm sur plusieurs systèmes selon les besoins pour augmenter la capacité de l'application.
Voyons comment le cluster Apache Storm est conçu et son architecture interne. Le diagramme suivant illustre la conception du cluster.
Apache Storm a deux types de nœuds, Nimbus (nœud maître) et Supervisor (nœud travailleur). Nimbus est un composant essentiel d'Apache Storm. La tâche principale de Nimbus est d'exécuter la topologie Storm. Nimbus analyse la topologie et collecte les tâches à effectuer. Il attribue ensuite des tâches aux superviseurs disponibles.
Le superviseur aura un ou plusieurs processus de travail. Le superviseur délègue des tâches aux processus de travail. Le processus de travail générera autant d'exécuteurs et exécutera des tâches que nécessaire. Apache Storm utilise un système de messagerie distribué interne pour la communication entre Nimbus et l'hyperviseur.
Composant | Description |
---|---|
Nimbus (Master Node) | Nimbus est le nœud maître du cluster Storm. Tous les autres nœuds du cluster sont appelés nœuds de travail. Le nœud maître est responsable de la distribution des données entre tous les nœuds de travail, de l'attribution des tâches aux nœuds de travail et de la surveillance des échecs. |
Superviseur (nœud de travail) | Les nœuds qui suivent les instructions sont appelés Superviseurs. Supervisor dispose de plusieurs processus de travail et gère les processus de travail pour accomplir les tâches assignées par nimbus. |
Worker Process | Worker Process effectuera des tâches liées à une topologie spécifique. Au lieu d'exécuter eux-mêmes les tâches, les processus de travail créent des exécuteurs et leur demandent d'effectuer des tâches spécifiques. Les processus de travail auront plusieurs exécuteurs. |
Exécuteur | Un exécuteur n'est qu'un seul thread généré par un processus de travail. Un exécuteur exécute une ou plusieurs tâches, mais uniquement pour un bec ou un boulon spécifique. |
Task (Task) | Task effectue le traitement réel des données. Il s'agit donc d'un bec ou d'un boulon. |
Framework ZooKeeper (Framework ZooKeeper) | Apache ZooKeeper est un service qui utilise des clusters (groupes de nœuds) pour se coordonner entre eux et maintenir les données partagées avec une puissante technologie de synchronisation. Nimbus est sans état, il s'appuie donc sur ZooKeeper pour surveiller l'état des nœuds de travail. ZooKeeper aide le superviseur à interagir avec nimbus. Il est chargé de maintenir le statut de nimbus et de superviseur. |
Storm est apatride. Même si la nature apatride présente ses propres inconvénients, elle aide Storm à gérer les données en temps réel de la manière la plus efficace et la plus rapide possible.
Storm n’est cependant pas complètement apatride. Il stocke son état dans Apache ZooKeeper. Étant donné que l'état est disponible dans Apache ZooKeeper, un réseau défaillant peut être redémarré et fonctionner là où il s'est arrêté. En règle générale, un outil de surveillance des services tel que monit surveillera Nimbus et le redémarrera en cas de panne.
Apache Storm dispose également d'une topologie avancée appelée topologie Trident, qui dispose d'une maintenance d'état et fournit également une API de haut niveau comme Pig. Nous aborderons toutes ces fonctionnalités dans les chapitres suivants.