Système informatique distribué Apache Storm 2.0 disponible

j'ai vu la lumière version importante d'un système de traitement d'événements distribué Apache Tempête 2.0, remarquable par sa transition vers une nouvelle architecture implémentée en Java, au lieu du langage Clojure précédemment utilisé.

Le projet permet d'organiser un traitement garanti de divers événements en temps réel. Par exemple, Storm peut être utilisé pour analyser des flux de données en temps réel, exécuter des tâches d'apprentissage automatique, organiser le calcul continu, mettre en œuvre RPC, ETL, etc. Le système prend en charge le clustering, la création de configurations tolérantes aux pannes, un mode de traitement des données garanti et offre des performances élevées, suffisantes pour traiter plus d'un million de requêtes par seconde sur un nœud de cluster.

L'intégration avec divers systèmes de traitement de files d'attente et technologies de bases de données est prise en charge. L'architecture Storm implique la réception et le traitement de flux de données non structurés et constamment mis à jour à l'aide de processeurs complexes arbitraires avec la capacité de partitionner entre différentes étapes de calcul. Le projet a été confié à la communauté Apache après l'acquisition par Twitter de BackType, la société qui a initialement développé le framework. En pratique, Storm a été utilisé dans BackType pour analyser le reflet des événements dans les microblogs, en comparant à la volée les nouveaux tweets et les liens utilisés dans ceux-ci (par exemple, il a été évalué comment les liens externes ou les annonces publiées sur Twitter étaient rediffusés par d'autres participants). ).

Les fonctionnalités de Storm sont comparées à celles de la plateforme Hadoop, la principale différence étant que les données ne sont pas stockées dans un entrepôt, mais sont ingérées en externe et traitées en temps réel. Storm n'a pas de couche de stockage intégrée et la requête analytique commence à être appliquée aux données entrantes jusqu'à ce qu'elle soit annulée (alors que Hadoop utilise des tâches MapReduce à temps fini, Storm utilise l'idée d'exécuter des « topologies » en continu). L'exécution des gestionnaires peut être répartie sur plusieurs serveurs - Storm parallélise automatiquement le travail avec les threads sur différents nœuds du cluster.

Le système a été initialement écrit en Clojure et s'exécute dans la machine virtuelle JVM. La Fondation Apache a lancé une initiative visant à migrer 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 des gestionnaires d'écriture dans Clojure a été conservée, mais est désormais proposée sous forme de liaisons. Storm 2.0.0 nécessite Java 8. Le modèle de traitement multithread a été entièrement repensé, permettant pour obtenir une augmentation notable des performances (pour certaines topologies, les retards ont été réduits de 50 à 80 %).

Système informatique distribué Apache Storm 2.0 disponible

La nouvelle version propose également une nouvelle API Streams typée qui vous permet de définir des gestionnaires à l'aide d'opérations de style programmation fonctionnelle. La nouvelle API est implémentée au-dessus de l'API de base standard et prend en charge la fusion automatique des opérations pour optimiser leur traitement. L'API Windowing pour les opérations de fenêtre a ajouté la prise en charge de l'enregistrement et de la restauration de l'état dans le backend.

Soutien à la prise en compte de ressources supplémentaires lors de la prise de décisions non limitées à
CPU et mémoire, tels que les paramètres réseau et GPU. De nombreuses améliorations ont été apportées pour assurer l'intégration avec la plateforme Kafka. Le système de contrôle d'accès a été étendu pour inclure la possibilité de créer des groupes d'administrateurs et de déléguer des jetons. Ajout d'améliorations liées à la prise en charge de SQL et des métriques. De nouvelles commandes sont apparues dans l'interface administrateur pour déboguer l'état du cluster.

Domaines d'application de Storm :

  • Traiter les flux de nouvelles données ou les mises à jour des bases de données en temps réel ;
  • Informatique continue : Storm peut exécuter des requêtes continues et traiter des flux continus, fournissant ainsi les résultats du traitement au client en temps réel.
  • Appel de procédure distante distribué (RPC) : Storm peut être utilisé pour fournir une exécution parallèle de requêtes gourmandes en ressources. Un travail (« topologie ») dans Storm est une fonction distribuée sur les nœuds qui attend l'arrivée des messages qui doivent être traités. Après avoir reçu un message, la fonction le traite dans le contexte local et renvoie le résultat. Un exemple d'utilisation du RPC distribué serait de traiter des requêtes de recherche en parallèle ou d'effectuer des opérations sur un grand ensemble d'ensembles.

Caractéristiques de la tempête :

  • Un modèle de programmation simple qui simplifie grandement le traitement des données en temps réel ;
  • Prise en charge de tous les langages de programmation. Des modules sont disponibles pour Java, Ruby et Python, l'adaptation pour d'autres langages est aisée grâce à un protocole de communication très simple qui nécessite environ 100 lignes de code à prendre en charge ;
  • Tolérance aux pannes : pour exécuter un travail de traitement de données, vous devez générer un fichier jar avec du code. Storm distribuera indépendamment ce fichier jar sur les nœuds du cluster, connectera les gestionnaires qui lui sont associés et organisera la surveillance. Une fois le travail terminé, le code sera automatiquement désactivé sur tous les nœuds ;
  • Évolutivité horizontale. Tous les calculs sont effectués en mode parallèle : à mesure que la charge augmente, il suffit simplement de connecter de nouveaux nœuds au cluster ;
  • Fiabilité. Storm garantit que chaque message entrant est entièrement traité au moins une fois. Le message ne sera traité qu'une seule fois s'il n'y a pas d'erreur lors du passage par tous les gestionnaires ; si des problèmes surviennent, les tentatives de traitement infructueuses seront répétées.
  • Vitesse. Le code de Storm est écrit dans un souci de hautes performances et utilise le système pour une messagerie asynchrone rapide ZéroMQ.

Source: opennet.ru

Ajouter un commentaire