Concepts de base d'Apache Storm


Apache Storm lit un flux brut de données en temps réel à une extrémité et le transmet à travers une série de petites unités de traitement et génère des informations traitées/utiles à l'autre extrémité.

La figure suivante décrit les concepts de base d'Apache Storm.

all_grouping.jpg

Maintenant, examinons de plus près les composants d'Apache Storm -

Composant Description
TupleTuple est la principale structure de données de Storm. C'est une liste d'éléments ordonnés. Par défaut, Tuple prend en charge tous les types de données. Généralement, il est modélisé comme un ensemble de valeurs séparées par des virgules et transmis au cluster Storm.
StreamUn flux est une séquence non ordonnée de tuples.
BecsSource de ruisseaux. En règle générale, Storm accepte les données d'entrée provenant de sources de données brutes telles que l'API Twitter Streaming, la file d'attente Apache Kafka, la file d'attente Kestrel, etc. Sinon, vous pouvez écrire des spouts pour lire les données de la source de données. "ISpout" est l'interface principale pour l'implémentation des spouts. Certaines interfaces spécifiques sont IRichSpout, BaseRichSpout, KafkaSpout, etc.
BoltsLes boulons sont des unités de traitement logiques. Les spouts transmettent les données aux processus Bolts et Bolts et produisent de nouveaux flux de sortie. Bolts peut effectuer des opérations telles que le filtrage, l'agrégation, la jointure et l'interaction avec des sources de données et des bases de données. Les Bolts reçoivent des données et les émettent vers un ou plusieurs Bolts. "IBolt" est l'interface principale pour la mise en œuvre de Bolts. Certaines interfaces courantes sont IRichBolt, IBasicBolt, etc.

Regardons un exemple en temps réel de « Twitter Analytics » et voyons comment il est modélisé dans Apache Storm. Le diagramme ci-dessous représente la structure.

global_grouping.jpg

L'entrée de "Twitter Analytics" provient de l'API Twitter Streaming. Spout utilisera l'API Twitter Streaming pour lire les tweets de l'utilisateur et les afficher sous forme de flux de tuples. Un seul tuple du bec aura le nom d'utilisateur Twitter et un seul tweet comme valeurs séparées par des virgules. La vapeur de ce tuple sera ensuite transmise à Bolt, et Bolt divise le tweet en mots individuels, compte le nombre de mots et enregistre les informations dans la source de données configurée. Nous pouvons désormais facilement obtenir les résultats en interrogeant la source de données.

Topologie

Les becs et les boulons sont connectés ensemble pour former une topologie. La logique d'application en temps réel est spécifiée dans la topologie Storm. En termes simples, une topologie est un graphe orienté où les sommets sont des calculs et les arêtes sont des flux de données.

La topologie simple commence par les becs. Les Spouts émettent des données vers un ou plusieurs Bolts. Les Bolts représentent des nœuds dans la topologie avec une logique de traitement minimale, et la sortie d'un Bolt peut être émise vers un autre Bolt en entrée.

Storm maintient la topologie en marche jusqu'à ce que vous y mettiez fin. La tâche principale d'Apache Storm consiste à exécuter des topologies et à exécuter un nombre illimité de topologies à un moment donné.

Quête

Vous avez maintenant une idée de base sur les becs et les boulons. Il s'agit de la plus petite unité logique de la topologie, et la topologie est construite à l'aide d'un seul tableau Spout et Bolt. Ils doivent être exécutés correctement dans un ordre spécifique pour que la topologie s'exécute correctement. Chaque bec et boulon exécutés par Storm est appelé une « tâche ». En termes simples, une tâche consiste à exécuter des becs ou des boulons. Chaque bec et boulon peuvent avoir plusieurs instances exécutées dans plusieurs threads distincts à un moment donné. La topologie

Processus

s'exécute de manière distribuée sur plusieurs nœuds de travail. Storm répartit les tâches uniformément sur tous les nœuds de travail. Le rôle d'un nœud de travail est d'écouter les tâches et de démarrer ou d'arrêter les processus lorsque de nouvelles tâches arrivent.

Regroupement de flux

Les données circulent des Spouts aux Bolts, ou d'un Bolts à un autre. Le regroupement de flux contrôle la manière dont les tuples sont acheminés dans la topologie et nous aide à comprendre le flux des tuples dans la topologie. Il existe quatre groupements intégrés, décrits ci-dessous.

Regroupement aléatoire

Dans le regroupement aléatoire, un nombre égal de tuples sont répartis au hasard parmi tous les travailleurs exécutant Bolts. Le diagramme ci-dessous représente la structure.

field_grouping.jpg

Regroupement de champs

Les champs ayant la même valeur dans un tuple sont regroupés et le reste du tuple est enregistré en externe. Les tuples avec les mêmes valeurs de champ sont ensuite envoyés au même processus exécutant Bolts. Par exemple, si le flux est regroupé par le champ « mot », les tuples avec la même chaîne « Bonjour » seront déplacés vers le même travailleur. Le diagramme ci-dessous montre comment fonctionne le regroupement de champs.

shuffle_grouping.jpg

Regroupement global

Tous les flux peuvent être regroupés et transférés vers un seul Bolt. Ce regroupement envoie les tuples générés par toutes les instances de la source à une seule instance cible (plus précisément, le travailleur avec l'ID le plus bas est sélectionné).

twitter_analysis.jpg

All Grouping

All Grouping envoie une seule copie de chaque tuple à toutes les instances recevant des Bolts. Ce regroupement est utilisé pour envoyer des signaux aux Bolts. Tous les regroupements sont utiles pour les opérations de jointure.

core_concept.jpg