VT2015 Complex Event Processing

Présentation
Enseignants : DONSEZ Didier, BONNEAU Georges-Pierre

Sujet : Complex Event Processing

Démonstration de Apache Storm et Spark Streaming sur le cloud d'Azure

Auteur : KLIPFFEL Tararaina

Date : 23/10/15

Mots clés :

Abstract
Today’s information society abounds in a myriad of information flows, computer-based human collaborations, software agent interactions, electronic business transactions, and the explosion of data on the Internet. Understanding what is happening in these environments is becoming increasingly difficult. In other words, we need to find the best ways to make sense of this wealth of data, to improve the quality and availability of information, and to ensure effective responses. Traditional storage and data analysis technologies are not adapted to this exponential growth of volume and event rates.

In addition, the value of information may decay rapidly over time. For instance, some events that may help anticipate a production outage have no value once the outage happened. There is a need to process data as soon as events occur, with respect to latency constraints. We need to move away from traditional client-server (query-response) interaction models, to more asynchronous, event-oriented, loosely coupled push model, with applications able to take decisions based on events data.

Complex Event Processing (CEP) is a set of technologies that allows exploring temporal, causal, and semantic relationships among events to make sense of them in a timely fashion.

Résumé
Nous assistons à une véritable explosion de la quantité d’information et du nombre de sources que les SI doivent gérer : interactions homme-machine ou entre machines, à l’intérieur du SI ou avec des partenaires, sans compter les nouvelles sources de données sur internet et les réseaux sociaux.

Toutes ces données, tous ces évènements peuvent avoir beaucoup de valeur et peuvent permettre de prendre des décisions, si on peut les traiter à temps.

L’article suivant, en anglais, présente les technologies de Complex Event Processing ; technologies qui permettent de traiter ces informations sous contrainte de temps, et d’en explorer les relations sémantiques et temporelles.

CEP
Le Complex Event Processing (en francais, Traitement des événements complexes) est un concept d'analyse d'événements permettant d'identifier les événements significatifs dans un nuage d'événements. Cela consiste à un calcul et/ou traitement exécutant des opérations (lecture, création, transformation, l’abstraction des données) sur des événements. Le CEP emploie des techniques telles que la détection des schémas complexes de multiples événements: corrélation, abstraction, et hiérarchies entre événements et les relations entre événements tels que les liens de causalité, l'adhésion, la chronologie et les processus pilotés par les événements. La fonction du CEP est de découvrir les informations contenues dans les événements qui passent dans toutes les couches d'une organisation et ensuite d'analyser son impact au niveau macro comme "événement complexe" et puis décider du plan d'action en temps réel.

Traitement de flots continus (ie non borné dans le temps) de données (mesures, événements) en temps réel.

Domaine d'application
Applications: réseaux de capteurs (IoT) journaux système (détection de fraudes, ...) finance (quotations boursières, ...) réseaux sociaux (post)

Complex Event Processing, en tant que concept, répond à tout besoin exigeant en termes de traçabilité, réactivité, disponibilité et prise de décision. La complexité de mise en œuvre réside dans la définition d’algorithmes de calcul et de corrélation performants ainsi que de processus et règles métiers optimisés.

Les domaines d’application sont divers et variés. Ci-dessous quelques exemples:

• Traçabilité par le biais de puces RFID – Exemple 1: Fiabilisation de la traçabilité d’objets dans une chaîne logistique – Exemple 2: Traçabilité des bagages dans un aéroport entre le dépôt à l’enregistrement par le voyageur et le chargement dans l’avion

• Problématiques financières et boursières – Exemple : Détection des « Microcap stock fraud » (**).

• Optimisation de tournées de flottes de véhicule – Optimisation en temps réel de tournées de flotte par corrélation de positions GPS et état du trafic

• Supervision technique des plateformes – Exemple : Traitement des alertes SNMP remontées par les composants logiciels et les serveurs

• Business Activity Monitoring (BAM)

• Sécurité des systèmes d’information par corrélation d’événements.

Solutions
CEP dans la jungle des solutions

Les solutions CEP peuvent être intégrées soit dans un périmètre applicatif (utilisation de frameworks comme Esper ou NEsper) ou positionnées comme un module transverse recueillant l’ensemble des événements provenant d’applications diverses du SI (par exemple, intégrées à une plateforme d’échanges transverse entreprise à base d’ESB).

Par rapport aux solutions existantes, de type BPM, BI ou autres, les solutions CEP se caractérisent par : – Un traitement continu d’une masse considérable (plusieurs centaines de milliers par seconde) d’événements provenant de sources d’information différentes – D’un besoin de prise de décision en temps réel par rapport à un ensemble d’événements quelconque surgissant dans une fenêtre temporelle définie. (de quelques secondes, à quelques heures, voire quelques jours)

C’est pour cette raison que ces solutions logicielles ne sont pas positionnées comme des solutions concurrentes, plutôt, complémentaires: – CEP, BI: solutions d’optimisation du business – BPM, workflow: solutions de gestion des processus – ESB/EAI: solution d’infrastructure logicielle – Serveurs physiques, virtualisation: solutions d’infrastructure physique

Apache Spark
Apache Spark est un framework de traitements Big Data open source développé par AMPLab, de l’Université UC Berkeley, en 2009 et passé open source sous forme de projet Apache en 2010. Apache Spark permet d'effectuer des analyses sophistiquées. C'est principaux avantages et sa rapidité et sa facilité d’utilisation.

Avantages
Spark présente plusieurs avantages par rapport aux autres technologies big data et MapReduce comme Hadoop et Storm. D’abord, Spark propose un framework complet et unifié pour répondre aux besoins de traitements Big Data pour divers jeux de données, divers par leur nature (texte, graphe, etc.) aussi bien que par le type de source (batch ou flux temps-réel). Ensuite, Spark permet à des applications sur clusters Hadoop d’être exécutées jusqu’à 100 fois plus vite en mémoire, 10 fois plus vite sur disque. Il vous permet d’écrire rapidement des applications en Java, Scala ou Python et inclut un jeu de plus de 80 opérateurs haut-niveau. De plus, il est possible de l’utiliser de façon interactive pour requêter les données depuis un shell.

Enfin, en plus des opérations de Map et Reduce, Spark supporte les requêtes SQL et le streaming de données et propose des fonctionnalités de machine learning et de traitements orientés graphe. Les développeurs peuvent utiliser ces possibilités en stand-alone ou en les combinant en une chaîne de traitement complexe.

À côté des API principales de Spark, l’écosystème contient des librairies additionnelles qui permettent de travailler dans le domaine des analyses big data et du machine learning. Parmi ces librairies, on trouve : Spark Streaming

Spark Streaming
Spark Streaming peut être utilisé pour traitement temps-réel des données en flux. En vérité Spart Streaming ne fait pas de l'analyse de données en temps réel mais utilise plutôt un mode de traitement "micro-batch". C'est à dire que Spark ne traite pas les données d’un flux en continue (contrairement à Apache Storm) mais les accumule pendant un laps de temps fixé avant d’être traitées. Deplus Spark stream utilise pour les données temps-réel DStream, c’est-à-dire une série de RDD (Resilient Distributed Dataset).

batch :En informatique, un traitement par lots est un enchaînement automatique d'une suite de commandes (processus) sur un ordinateur sans intervention d'un opérateur.Une fois que ce processus est terminé (quel que soit le résultat), l'ordinateur traite le lot suivant. Le traitement des lots se termine une fois que tous les lots de la pile ont été exécutés.

Les Resilient Distributed Datasets (basés sur la publication de recherche de Matei), ou RDD, sont un concept au cœur du framework Spark. Vous pouvez voir un RDD comme une table dans une base de données. Celui-ci peut porter tout type de données et est stocké par Spark sur différentes partitions. Les RDD permettent de réarranger les calculs et d’optimiser le traitement. Ils sont aussi tolérants aux pannes car un RDD sait comment recréer et recalculer son ensemble de données. Les RDD sont immutables. Pour obtenir une modification d’un RDD, il faut y appliquer une transformation, qui retournera un nouveau RDD, l’original restera inchangé. Les RDD supportent deux types d’opérations :

Conclusion
On peut dire aujourd’hui que les solutions existantes sont au stade de la « croissance » et dépassent largement l’écosystème «trading» financier, historiquement connues pour. L’évolution et l’adaptation de ce genre de solution sur les prochaines années sera rapide. Selon IDC, ce marché représente 140M$ aujourd’hui et 800M$ en 2012.