Apache Storm - Concepts de base

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

Le diagramme suivant illustre le concept de base d'Apache Storm.

Examinons maintenant de plus près les composants d'Apache Storm -

Composants La description
Tuple Tuple est la structure de données principale de Storm. C'est une liste d'éléments ordonnés. Par défaut, un Tuple prend en charge tous les types de données. En règle générale, il est modélisé comme un ensemble de valeurs séparées par des virgules et transmis à un cluster Storm.
Courant Stream est une séquence non ordonnée de tuples.
Becs Source de flux. Généralement, Storm accepte les données d'entrée 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 des sources de données. «ISpout» est l'interface principale pour la mise en œuvre des spouts. Certaines des interfaces spécifiques sont IRichSpout, BaseRichSpout, KafkaSpout, etc.
Boulons Les boulons sont des unités de traitement logiques. Les becs transmettent les données au processus des boulons et boulons et produisent un nouveau flux de sortie. Les boulons peuvent effectuer les opérations de filtrage, d'agrégation, de jonction, d'interaction avec les sources de données et les bases de données. Bolt reçoit des données et émet vers un ou plusieurs boulons. «IBolt» est l'interface principale pour la mise en œuvre des boulons. Certaines des interfaces courantes sont IRichBolt, IBasicBolt, etc.

Prenons un exemple en temps réel de «Twitter Analysis» et voyons comment il peut être modélisé dans Apache Storm. Le diagramme suivant illustre la structure.

L'entrée pour «l'analyse Twitter» provient de l'API Twitter Streaming. Spout lira les tweets des utilisateurs à l'aide de l'API Twitter Streaming et les affichera sous forme de flux de tuples. Un seul tuple du bec aura un nom d'utilisateur Twitter et un seul tweet en tant que valeurs séparées par des virgules. Ensuite, cette vapeur de tuples sera transmise au Bolt et le Bolt divisera le tweet en mot individuel, calculera le nombre de mots et conservera les informations dans une source de données configurée. Maintenant, nous pouvons facilement obtenir le résultat en interrogeant la source de données.

Topologie

Les becs et les boulons sont connectés ensemble et forment 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 le calcul et les arêtes sont un flux de données.

Une topologie simple commence par des becs. Spout envoie les données à un ou plusieurs boulons. Bolt représente un nœud dans la topologie ayant la plus petite logique de traitement et la sortie d'un boulon peut être émise dans un autre boulon en entrée.

Storm maintient la topologie toujours en cours d'exécution, jusqu'à ce que vous la supprimiez. La tâche principale d'Apache Storm est d'exécuter la topologie et d'exécuter n'importe quel nombre de topologie à un moment donné.

Tâches

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 une topologie est construite à l'aide d'un seul bec et d'un ensemble de boulons. Ils doivent être exécutés correctement dans un ordre particulier pour que la topologie s'exécute correctement. L'exécution de chaque bec et boulon par Storm s'appelle «Tâches». En termes simples, une tâche est soit l'exécution d'un bec ou d'un boulon. À un moment donné, chaque bec et chaque boulon peuvent avoir plusieurs instances s'exécutant dans plusieurs threads séparés.

Travailleurs

Une topologie s'exécute de manière distribuée, sur plusieurs nœuds de calcul. Storm répartit les tâches uniformément sur tous les nœuds de travail. Le rôle du nœud worker est d'écouter les travaux et de démarrer ou d'arrêter les processus chaque fois qu'un nouveau travail arrive.

Regroupement de flux

Le flux de données circule des becs aux boulons ou d'un boulon à un autre boulon. Le regroupement de flux contrôle la façon dont les tuples sont routés dans la topologie et nous aide à comprendre le flux de tuples dans la topologie. Il existe quatre groupements intégrés, comme expliqué ci-dessous.

Regroupement aléatoire

Dans le groupement aléatoire, un nombre égal de tuples est distribué aléatoirement sur tous les ouvriers exécutant les boulons. Le diagramme suivant illustre la structure.

Regroupement de champs

Les champs avec les mêmes valeurs dans les tuples sont regroupés et les tuples restants conservés à l'extérieur. Ensuite, les tuples avec les mêmes valeurs de champ sont envoyés au même travailleur exécutant les boulons. Par exemple, si le flux est groupé par le champ «mot», alors les tuples avec la même chaîne, «Hello» seront déplacés vers le même worker. Le diagramme suivant montre le fonctionnement du regroupement de champs.

Regroupement global

Tous les flux peuvent être regroupés et transmis à un seul boulon. Ce regroupement envoie des tuples générés par toutes les instances de la source vers une seule instance cible (en particulier, choisissez le worker avec l'ID le plus bas).

Tous les regroupements

Tous les regroupements envoie une seule copie de chaque tuple à toutes les instances du boulon de réception. Ce type de regroupement est utilisé pour envoyer des signaux aux boulons. Tous les regroupements sont utiles pour les opérations de jointure.