tutoriel esper

22
ANALYSE DES FLOTS D’ÉVÉNEMENTS: TUTORIEL ESPER Par Epal Njamen Orléant, [email protected] Master 2 Informatique

Upload: laboratoire-dinformatique-de-grenoble

Post on 24-Dec-2014

665 views

Category:

Documents


4 download

DESCRIPTION

Introduction au traitement des flux d'événements, et mise en oeuvre à travers un scénario, utilisant le système Esper. (http://esper.codehaus.org/)

TRANSCRIPT

Page 1: Tutoriel esper

ANALYSE DES FLOTS D’ÉVÉNEMENTS: TUTORIEL ESPER

Par Epal Njamen Orléant, [email protected]

Master 2 Informatique

Page 2: Tutoriel esper

Plan

Contexte et motivations scénario

Implantation Installation des outils Présentation de l’implantation du scénario Application

Page 3: Tutoriel esper

La notion d’événement

Quelque chose qui s’est produit à un certain instant Achat d’un article Fermeture d’une porte Accident de la circulation Changement climatique Notification d’un capteur etc...

Page 4: Tutoriel esper

Communication à base d’événements Style de communication

basé sur la production et la réception d’événements (publish/subscribe) Producteurs

composants applicatifs produisant des événements (publish)

Consommateurs composants applicatifs

intéressés en la réception de certains événements (subscribe)

Page 5: Tutoriel esper

Scénario: ville intelligente

On désire permettre aux habitants d’une ville de se déplacer en restant informés sur la façon dont la ville évolue.

Plus précisément, donner la possibilité aux habitants d’être notifiés de certaines situations intéressantes et utiles à leur existence: offres d’article en solde état du trafic routier zones à faible degré de violence etc…

Page 6: Tutoriel esper

Scénario: ville intelligente (2)

Je souhaite recevoir des informations sur le trafic chaque soir entre 17h et 19h, en semaine

Pour le weekend, les offres de cinéma et des rassemblements artistiques.

Quand je me déplace, j’aimerai savoir le degré de violence des quartiers que je traverse.

Le type d’information que chacun veut recevoir dépend de ses préférences et ses besoins pendant des périodes spécifiques…

Page 7: Tutoriel esper

La notion de type d’événement Représente une classe d’événements de

même caractéristiques Ex: TraficEvent (long timestamp, String roadName,

String state )

Un événement est donc une instance d’un type d’événement t(52344945, "Av. J O", "fluide" )

Page 8: Tutoriel esper

Type d’Evénement simple, complexe,

Evénement simple représente une situation atomique directement signalée

par un producteur. Evénement complexe ou composite

Événement qui est une abstraction d’autres événements, appelés membres Tsunami: abstraction de plusieurs événements naturels… Crash d’un avion: abstraction de plusieurs pannes du système de

contrôle Bug de l’an 2000: abstraction du crash de plusieurs systèmes

informatiques, dus au passage à l’année 2000 Il est crée en combinant des événements de base, en

utilisant des opérateurs de composition spécifiques tel que l’agrégation, conjonction, disjonction, séquence, etc…

Page 9: Tutoriel esper

Composition d’événements dans la ville

Une infrastructure à base d’événements, devant interconnecter dans un style producteurs/consommateurs (publish/subscribe) les habitants et les sources de données: Sources de données (producteurs):

génèrent les flux d’événements Service Météo => données

météorologiques Service Routier => info trafic,

incidents, etc… Service Sécurité => infos sur les

actes de vandalisme dans les rues Service Calendrier => jours fériés,

dates importantes, etc… Service Annonces => mises en vente,

publicités, artistique, cinéma, etc… Les habitants (consommateurs):

spécifient la nature des informations qu’ils désirent recevoir.

Page 10: Tutoriel esper

Solutions existantes

Esper [1], Stream [2], StreamBase [3], StreamInSight [4]

Principales fonctionnalités offertes Agrégation: avg, count, sum Corrélation : followed by, and, or, not

A => (B or C) A and (not B)

Filtrage: Type et attributs ActionEvent (user="toto", action="exit")

Page 11: Tutoriel esper

Tutoriel Esper

Un système centralisé d’analyse de flux d’événements

Langages cibles Java: Esper .NET: NEsper

Open source, téléchargeable gratuitement JDK 1.5 ou version supérieure Langage proche du sql, l’EPL

Permet de spécifier des requêtes complexes Modèle d’analyse en continue des requêtes Site principal: http://esper.codehaus.org/

Page 12: Tutoriel esper

Types d’événements sous Esper 3 représentations:

java.lang.Object: POJO avec getters et setters…

java.util.Map: paires clé-valeur org.w3c.dom.Node: xml DOM

Des adaptateurs permettant la prise en compte des flux CSV, JMS, HTTP

Page 13: Tutoriel esper

Exemple: classe Java

public class SellEvent {

private String item;

private String description;

private double price;

public SellEvent() {

}

/*

* ainsi que les getteurs et setteurs…

*/

}

Page 14: Tutoriel esper

Production des événements

Avertissement au préalable du type d’événement:EPServiceProvider cep=EPServiceProviderManager.getProvider();

cep.getEPAdministrator(). getConfiguration().addEventType("SellEvent", SellEvent.class.getName());

Production proprement dite:SellEvent event=new SellEvent();

event.setItem("iPhone 4 S");

event.setDescription("version 16 Go");

event.setPrice(400);

event.setTimestamp(System.currentTimeMillis());

cep.getEPRuntime().send(event);

Page 15: Tutoriel esper

Formulation d’une requête

Détection des articles en solde: le prix a chuté de 50% par rapport au prix initial au cours du même mois…

select a.item as item, a.price as oldprice, b.price as price, a.description as descriptionfrom pattern [

every-distinct(a.item) a=SellEvent -> every b=SellEvent(item=a.item, price< (a.price*0.5))].win:time(1 month)

Page 16: Tutoriel esper

Définition d’un consommateur

Association requête-consommateur cepStatement = CEPManager.getInstance().getCepAdm().createEPL(query);

cepStatement.addListener(new SoldeListener());

Code du consommateur

public class SoldeListener implements UpdateListener { public void update(EventBean[] ebs, EventBean[] ebs1) { EventBean o = ebs[0]; double price = (Double) o.get("price"); double oldprice = (Double) o.get("oldprice"); String item = (String) o.get("item"); String descr = (String) o.get("description"); // traitement… }}

Page 17: Tutoriel esper

Implantation et exécution du scénario

Le projet démo: Un exécutable java

Producteurs d’événements simples Création automatique d’un consommateur pour

chaque requête fournie dans le fichier custom_query.txt 

Page 18: Tutoriel esper

Dans le fichier custom_query.txt Requête 1: soldes… requête 2: détection de l’absence de vandalisme dans la ville de

Grenoble lors de la dernière minute

@Name('custom2') select * from pattern [every ( timer:interval(1 min) and not PoliceEvent(city='grenoble'))]

requête 3: détection des offres de loisir (artistique, cinéma) dans la ville de Grenoble les weekends et les jours fériés

@Name ('custom3') select e.type, e.city, e.title, e.description from pattern [ every ( ( CalendarEvent(state='férié chomé') or timer:at (*,*,*,*,*/6,*) ) -> e=PubEvent (type in ('Cinema', 'Artistique') ) ) ].win:time(1 day)|e.type, e.city, e.title, e.description

Page 19: Tutoriel esper

Exécution

Visualisation du projet sous eclipse

$> java –jar scenarioTest.jar

Page 20: Tutoriel esper

Conclusion

Nous avons présenté la notion d’analyse des flux d’événements, et à travers un scénario, nous avons pu expérimenter ces notions en utilisant Esper [1].

Dans la prochaine présentation, nous nous attaquerons à la problématique qui consiste à distribuer le processus d’analyse sur plusieurs machines.

Nous illustrerons les principaux défis, et nous présenterons une approche pour la distribution

TAF Spécifier un service composition distribuée des flux

d’événements Implémentation et validation ?

Page 21: Tutoriel esper

References

[1] Esper, http://esper.codehaus.org/ [2] Stream, http

://infolab.stanford.edu/stream/code/user.pdf

[3] StreamInsight, http://msdn.microsoft.com/en-us/library/ee362541.aspx

[4] StreamBase, http://www.streambase.com/

Page 22: Tutoriel esper

Merci pour votre aimable attention !