Apache Storm est un projet qui vous permet d'organiser le traitement garanti de divers événements en temps réel. Par exemple, Storm peut être utilisé pour analyser les flux de données en temps réel, effectuer tâches d'apprentissage automatique, organiser des calculs continus, implémenter RPC, ETL, etc.
Le système prend en charge le clustering, lpour créer des configurations tolérantes aux pannes, un mode de traitement des données garanti et un débit suffisamment élevé pour traiter plus d'un million de requêtes par seconde sur un nœud de cluster.
Intégration d'Apache Storm avec divers systèmes de traitement de files d'attente et technologies de base de données.
L'architecture de Storm implique la réception et le traitement de flux de données non structurés et constamment mis à jour à l'aide de contrôleurs complexes arbitraires avec la possibilité de diviser entre différentes étapes de calcul.
À propos d'Apache Storm
Le projet a été transféré à la communauté Apache après l'acquisition de Twitter par BackType, la société qui a initialement développé le framework.
En pratique, Storm a été utilisé dans BackType pour analyser le reflet d'événements dans les microblogs, en comparant les nouveaux tweets à la volée et les liens qui y étaient utilisés (par exemple, ils ont été évalués comme des liens externes ou des publicités Twitter diffusées par d'autres participants).
La fonctionnalité Storm se compare à la plateforme Hadoop, et la principale différence est que les données ne sont pas placées dans le référentiel, mais sont reçues de l'extérieur et traitées en temps réel.
Dans Storm, il n'y a pas de couche de stockage intégrée et la requête analytique commence à s'appliquer aux données entrantes jusqu'à ce qu'elle soit annulée (si Hadoop utilise le travail MapReduce qui prend un temps limité, alors Storm utilise l'idée d'exécuter des «topologies» en continu.
L'exécution des handlers peut être distribuée sur plusieurs serveurs: le Storm parallélise automatiquement le travail avec des threads dans différents nœuds du cluster.
Principaux cas d'utilisation pouvant être donnés à Apache Storm
Traitement de nouveaux flux de données ou mises à jour de bases de données en temps réel
Calculs continus: Storm peut effectuer des requêtes en continu et traiter des flux continus, transférer les résultats du traitement au client en temps réel.
Appel de procédure à distance distribué (RPC): une tempête peut être utilisée pour fournir une concurrence dans l'exécution de requêtes gourmandes en ressources.
Une tâche («topologie») dans Storm est une fonction distribuée entre les nœuds qui attend que les messages entrants soient traités.
Après avoir reçu le message, la fonction le traite dans un contexte local et renvoie le résultat. Un exemple d'utilisation de RPC distribué pourrait être le traitement parallèle des requêtes de recherche ou l'exécution d'opérations sur un grand ensemble d'ensembles.
Nouvelles fonctionnalités principales d'Apache Storm 2.0
La Fondation Apache lancé des initiatives pour transférer Storm vers un nouveau noyau écrit en Java, dont les résultats sont proposés dans la version Apache Storm 2.0.
Tous les composants de base de la plateforme sont réécrits en Java. La prise en charge de l'écriture de gestionnaires dans Clojure est préservée, mais elle est désormais proposée sous forme de liens. Java 8 est requis pour que Storm 2.0.0 fonctionne.
Le modèle de traitement multithread a été entièrement repensé, ce qui a entraîné une augmentation notable des performances (pour certaines topologies, les latences ont été réduites de 50 à 80%).
Dans la nouvelle version une nouvelle API Streams typée a été proposée, qui vous permet de configurer des gestionnaires à l'aide d'opérations dans le style de programmation fonctionnelle.
La nouvelle API est implémentée sur la base de l'API standard et prend en charge la fusion automatique des opérations pour optimiser leur traitement. L'API de fenêtrage pour les opérations de fenêtre ajoute la prise en charge de l'enregistrement et de la restauration de l'état dans le backend.
En revanche le contrôleur pour démarrer les ressources supplémentaires en compte lors de la prise de décisions qui ne se limitent pas au processeur et à la mémoire, tels que les paramètres de réseau et de GPU, il a été ajouté au planificateur de démarrage.
Une foule d'améliorations liées à l'intégration avec la plate-forme Kafka.
Le système de contrôle d'accès a été étendu, dans lequel l'opportunité s'est présentée de créer des groupes d'administrateurs et une délégation de jetons.
Ajout d'améliorations liées à la prise en charge de SQL et des métriques. L'interface administrateur a de nouvelles commandes pour déboguer l'état du cluster.