Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
Apache Cassandra - Concepts et fonctionnalités, 25/02/2014
Présentation de Cassandra pour le premier évènement "Lyon Cassandra Users" (organisé par DataStax & Zenika).
* Présentation de Cassandra
* Concepts clés (Théorie & Architecture)
* Installation
* Les outils DataStax : DevCenter et OpsCenter
* Modèle de données
* Requêtes
Actuellement, on parle beaucoup de traitement en lots (batch) dans le monde du Big Data. Mais qu’en est-il du Streaming et du temps réel ? Beaucoup de frameworks Big Data tentent de répondre à cette problématique. En tête de liste figure Spark : grâce à son composant Spark Streaming, il permet un traitement en continu des flux de données et une disponibilité 24/7.
Au programme :
- Streaming et Architecture Big Data
- Hello world Spark Streaming
- Intégration de Flume à Spark Streaming
- Use case “métriques sur des logs applicatifs”
- Architecture physique : driver / workers / receivers
- Monitoring de Spark Streaming
- Fail over : reliable / unreliable sources, checkpoint, recover
- Tuning et performance.
Speakers :
- Nadhem LAMTI, Architecte Technique chez PALO IT
Depuis 10 ans, Nadhem intervient principalement sur des projets JAVA JEE de grande envergure dans différents secteurs (Télécommunication, Banque, Finance, Transports, Tourisme, etc.), développant ainsi une expertise polyvalente en abordant multiples technologies et architectures. Fort d’une expérience concluante en tant qu’Ingénieur Performance & Support, Nadhem est capable d’intervenir sur des problématiques de production liées à des systèmes d’informations complexes. Actuellement en mission chez Voyages SNCF, il contribue à un grand chantier Big Data de centralisation de logs et s’intéresse tout particulièrement au nouveau produit phare de traitement de données Apache Spark.
- Saâd-Eddine MALTI, Expert BDD chez Voyages SNCF
En poste depuis 10 ans chez Voyages SNCF, Saâd-Eddine intervient en tant qu’Expert BDD sur toutes les applications de manière transverse. L’orientation affichée de Voyages SNCF vers le Big Data pousse Saâd-Eddine à s’investir pleinement dans ce domaine, également sur le nouveau produit phare de traitement de données Apache Spark.
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
Apache Cassandra - Concepts et fonctionnalités, 25/02/2014
Présentation de Cassandra pour le premier évènement "Lyon Cassandra Users" (organisé par DataStax & Zenika).
* Présentation de Cassandra
* Concepts clés (Théorie & Architecture)
* Installation
* Les outils DataStax : DevCenter et OpsCenter
* Modèle de données
* Requêtes
Actuellement, on parle beaucoup de traitement en lots (batch) dans le monde du Big Data. Mais qu’en est-il du Streaming et du temps réel ? Beaucoup de frameworks Big Data tentent de répondre à cette problématique. En tête de liste figure Spark : grâce à son composant Spark Streaming, il permet un traitement en continu des flux de données et une disponibilité 24/7.
Au programme :
- Streaming et Architecture Big Data
- Hello world Spark Streaming
- Intégration de Flume à Spark Streaming
- Use case “métriques sur des logs applicatifs”
- Architecture physique : driver / workers / receivers
- Monitoring de Spark Streaming
- Fail over : reliable / unreliable sources, checkpoint, recover
- Tuning et performance.
Speakers :
- Nadhem LAMTI, Architecte Technique chez PALO IT
Depuis 10 ans, Nadhem intervient principalement sur des projets JAVA JEE de grande envergure dans différents secteurs (Télécommunication, Banque, Finance, Transports, Tourisme, etc.), développant ainsi une expertise polyvalente en abordant multiples technologies et architectures. Fort d’une expérience concluante en tant qu’Ingénieur Performance & Support, Nadhem est capable d’intervenir sur des problématiques de production liées à des systèmes d’informations complexes. Actuellement en mission chez Voyages SNCF, il contribue à un grand chantier Big Data de centralisation de logs et s’intéresse tout particulièrement au nouveau produit phare de traitement de données Apache Spark.
- Saâd-Eddine MALTI, Expert BDD chez Voyages SNCF
En poste depuis 10 ans chez Voyages SNCF, Saâd-Eddine intervient en tant qu’Expert BDD sur toutes les applications de manière transverse. L’orientation affichée de Voyages SNCF vers le Big Data pousse Saâd-Eddine à s’investir pleinement dans ce domaine, également sur le nouveau produit phare de traitement de données Apache Spark.
Cassandra s'impose chez Chronopost comme base NoSQL de choix pour remplacer les RDBMS traditionnels.
Pourquoi choisir Cassandra dans la jungle du Big Data, pour quels usages et quels gains en tirer.
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
Spark fait partie de la nouvelle génération de frameworks de manipulation de données basés sur Hadoop. L’outil utilise agressivement la mémoire pour offrir des temps de traitement jusqu’à 100 fois plus rapides qu'Hadoop. Dans cette session, nous découvrirons les principes de traitement de données (notamment MapReduce) et les options mises à disposition pour monter un cluster (Zookeper, Mesos…). Nous ferons un point sur les différents modules proposés par le framework, et notamment sur Spark Streaming pour le traitement de données en flux continu.
Présentation jouée chez Ippon le 11 décembre 2014.
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
Découvrez au cours de cette présentation le fonctionnement de la base de données Cassandra.
- Qu'est-ce que Cassandra ?
- Pourquoi l'utiliser ?
- Comment l'utiliser ?
- Comment la mettre en œuvre ?
Cette présentation a été jouée lors de l'IppEvent qui a eu lieu le 2017-03-02 dans les locaux d'OVH Lyon. Elle fait partir du temps fort Big Data 2017 https://blog.ippon.fr/2017/03/01/un-mois-de-mars-100-big-data/.
Merci à l'équipe d'OVH pour son accueil chaleureux.
Slides de la présentation "Cassandra Java Driver" à l'Ippevent du 20 juin 2013
http://blog.ippon.fr/2013/06/03/ippevent-utiliser-les-nouvelles-apis-cassandra-le-2-juin-2013/
Démarrer rapidement avec Apache Flink par Bilal Baltagi
- Présentation de l'éco Système Apache Flink
- Prise en main rapide
Bilal Baltagi a obtenu un master en analyse des données à l'Université Paris Nord - Paris 13. Il est actuellement consultant décisionnel chez Sarenza à Paris. Il intervient sur toutes les phases d'un projet décisionnel et Big data: recueil des besoins, conceptions, réalisations et accompagnement des utilisateurs. Bilal est de plus en plus intéressé à l'intersection de la Big Data avec la Business Intelligence et aime jouer avec Apache Flink!
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
Kafka Connect & Kafka Streams - Paris Kafka User Group
05/18/2016
http://www.meetup.com/fr-FR/Paris-Apache-Kafka-Meetup/events/230324870/
Code : https://github.com/hriviere/demo-kafka-connect-streams
http://chtijug.org/session-spring-batch-avec-ekino-le-29-novembre/
Nous avons le plaisir de vous annoncer que la prochaine session du Ch’ti JUG est prévue le 29 novembre 2011. Elle aura lieu à l’IUT A de Lille 1, boulevard Paul Langevin, à Villeneuve d’Ascq. Plan d’accès
Le thème de cette session est Spring Batch : un framework pour implémenter des traitements de masse en Java.
Cette présentation sera animée par Olivier Bazoud / @obazoud et Julien Jakubowski / @jak78.
Cette session est rendue possible grâce à Ekino / @3k1no.
http://www.parisjug.org/xwiki/bin/view/Meeting/20130514
Quand j'écris une application Web, il y a pléthore de frameworks Web. Quand j'accède à une base de données, il y a des solutions de persistance (Hibernate, etc.). Quand je fais du batch, je suis... à poil ! Les batchs seraient-ils les parents pauvres de Java ? Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs en Java en toute décontraction. Le 14 Mai, Olivier et Julien vous présenteront Spring Batch et vous donneront une autre vision des batchs en Java.
Intervenants : Julien Jakubowski et Olivier Bazoud
REX sur la mise en place d'une plate-forme temps réel chez Generali. La problématique est la suivante : comment réaliser une vision clients 360, et donc une vue agrégée est uniformisée de différents référentiels clients localisés sur divers systèmes, ayant chacun un modèle propre.
James Christie CAST 2014 Standards – promoting quality or restricting competi...James Christie Christie
James Christie's talk on the anti-competitive nature of ISO 29119 and tester certification. It was given at CAST 2014, the conference of the Association of Software Testing, in New York on 12th August 2014.
Cassandra s'impose chez Chronopost comme base NoSQL de choix pour remplacer les RDBMS traditionnels.
Pourquoi choisir Cassandra dans la jungle du Big Data, pour quels usages et quels gains en tirer.
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
Spark fait partie de la nouvelle génération de frameworks de manipulation de données basés sur Hadoop. L’outil utilise agressivement la mémoire pour offrir des temps de traitement jusqu’à 100 fois plus rapides qu'Hadoop. Dans cette session, nous découvrirons les principes de traitement de données (notamment MapReduce) et les options mises à disposition pour monter un cluster (Zookeper, Mesos…). Nous ferons un point sur les différents modules proposés par le framework, et notamment sur Spark Streaming pour le traitement de données en flux continu.
Présentation jouée chez Ippon le 11 décembre 2014.
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
Découvrez au cours de cette présentation le fonctionnement de la base de données Cassandra.
- Qu'est-ce que Cassandra ?
- Pourquoi l'utiliser ?
- Comment l'utiliser ?
- Comment la mettre en œuvre ?
Cette présentation a été jouée lors de l'IppEvent qui a eu lieu le 2017-03-02 dans les locaux d'OVH Lyon. Elle fait partir du temps fort Big Data 2017 https://blog.ippon.fr/2017/03/01/un-mois-de-mars-100-big-data/.
Merci à l'équipe d'OVH pour son accueil chaleureux.
Slides de la présentation "Cassandra Java Driver" à l'Ippevent du 20 juin 2013
http://blog.ippon.fr/2013/06/03/ippevent-utiliser-les-nouvelles-apis-cassandra-le-2-juin-2013/
Démarrer rapidement avec Apache Flink par Bilal Baltagi
- Présentation de l'éco Système Apache Flink
- Prise en main rapide
Bilal Baltagi a obtenu un master en analyse des données à l'Université Paris Nord - Paris 13. Il est actuellement consultant décisionnel chez Sarenza à Paris. Il intervient sur toutes les phases d'un projet décisionnel et Big data: recueil des besoins, conceptions, réalisations et accompagnement des utilisateurs. Bilal est de plus en plus intéressé à l'intersection de la Big Data avec la Business Intelligence et aime jouer avec Apache Flink!
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
Kafka Connect & Kafka Streams - Paris Kafka User Group
05/18/2016
http://www.meetup.com/fr-FR/Paris-Apache-Kafka-Meetup/events/230324870/
Code : https://github.com/hriviere/demo-kafka-connect-streams
http://chtijug.org/session-spring-batch-avec-ekino-le-29-novembre/
Nous avons le plaisir de vous annoncer que la prochaine session du Ch’ti JUG est prévue le 29 novembre 2011. Elle aura lieu à l’IUT A de Lille 1, boulevard Paul Langevin, à Villeneuve d’Ascq. Plan d’accès
Le thème de cette session est Spring Batch : un framework pour implémenter des traitements de masse en Java.
Cette présentation sera animée par Olivier Bazoud / @obazoud et Julien Jakubowski / @jak78.
Cette session est rendue possible grâce à Ekino / @3k1no.
http://www.parisjug.org/xwiki/bin/view/Meeting/20130514
Quand j'écris une application Web, il y a pléthore de frameworks Web. Quand j'accède à une base de données, il y a des solutions de persistance (Hibernate, etc.). Quand je fais du batch, je suis... à poil ! Les batchs seraient-ils les parents pauvres de Java ? Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs en Java en toute décontraction. Le 14 Mai, Olivier et Julien vous présenteront Spring Batch et vous donneront une autre vision des batchs en Java.
Intervenants : Julien Jakubowski et Olivier Bazoud
REX sur la mise en place d'une plate-forme temps réel chez Generali. La problématique est la suivante : comment réaliser une vision clients 360, et donc une vue agrégée est uniformisée de différents référentiels clients localisés sur divers systèmes, ayant chacun un modèle propre.
James Christie CAST 2014 Standards – promoting quality or restricting competi...James Christie Christie
James Christie's talk on the anti-competitive nature of ISO 29119 and tester certification. It was given at CAST 2014, the conference of the Association of Software Testing, in New York on 12th August 2014.
Présentation du docteur Fayçal Mehrez sur une démarche Performance basée sur une approche BPM dans le contexte des outils PLM.
Présentation fait le 15 novembre 2015 dans le cadre du BPM Professional Group suivant celle faite par @TomBaeyens
Continuous delivery, a plugin for Kanban LKFR14Samuel RETIERE
This document outlines a continuous delivery maturity model with three levels. It discusses taking projects from prioritization to production in 2 weeks through adopting agile practices and continuous delivery. The three levels move from delivering value, to optimizing flow, to maximizing potential. Each level includes trainings, workshops and practices to advance capabilities in value, flow, and potential. The ultimate goal is to achieve continuous non-event releases through decentralized decision making and leadership development.
This document discusses Open Food Facts, an open and collaborative database created to provide transparency around the ingredients and nutritional information of food products. It launched in 2012 and now has over 1200 contributors and data on 24,000 products. The database aims to decrypt labels by providing information on additives, allergens and nutrition for consumers. It also allows users to compare products and is available under an open license for anyone to freely use and reuse. The challenges discussed include expanding internationally while managing organic growth through prioritization and coordination among volunteers.
There are many books and manifestos or even books about those manifestos :-) the aim of which is to teach you how to be more efficient. They provide you with diverse recipes and tools to be more efficient as a person, as a developer but also as organizations.
All those writing also have another important thing in common; they all say that in order to be more efficient you constantly need to focus on delivering value or even steadily adding value.
In this presentation I try to define what exactly value is and the kind of things you could put in place (and things to avoid!) to bring it down to your code or even within your tests.
The document discusses agile methodologies and principles. It introduces lightweight frameworks like Scrum, XP, Crystal, and FDD. It outlines the Agile Manifesto's four values and twelve principles. It then describes the five pillars of the Agile House: frequent delivery, focus on business value, communication and collaboration, team empowerment, and continuous improvement. An example project timeline shows expectations moving from 3-4 years to delivery of an MVP within 1 year through applying agile principles.
Slides from my talk on Redis at Human talks nantes http://humantalks.com/cities/nantes/events/136/talks/414-introduction-a-redis
Redsmin - Fully featured GUI for Redis: https://redsmin.com @redsmin
RedisWeekly - http://redisweekly.com @redisweekly
In these slide following projects are presented:
* redis_wrap: A Pythonic wrapper that makes it nicer to work with builtin Redis datatypes
* redis_graph: A sample graph database
* redis_simple_queue: A simple queue implemented on Redis list structure
* bitmapist: a powerful analytics library using Redis bitmaps, great for retention and cohort tracking
* fixedlist: a fixed list structure that can optimize timelines (and other things)
* how to use Lua scripting for more advanced data structures and better performance
These are Python projects, but some of them (like bitmapist) have been ported to other languages.
This talk was given to PyCon Belarus on 31 Jan. 2015
Provides an overview of Redis which is a Key Value NoSQL database and the different data types it supports. Also shows how to use Redis Client API from node.
Key-value databases in practice Redis @ DotNetToscanaMatteo Baglini
This document provides an overview of Redis, an open source in-memory data structure store. It discusses how Redis can be used as a data store, cache, and message broker. It explains Redis' core abstractions like strings, hashes, lists, sets, sorted sets; persistence options; replication; and pub/sub functionality. The document also provides information about Redis' performance, clients, and how it is well-suited for caching, analytics, and real-time applications.
Bring Your Own People Centric Business ProcessesTom Baeyens
Workflow is getting more important in an internet connected world. Employees become consumers and they just take the best tool for the job. Learn how Effektif enables anyone to build their own workflows.
Sorties le 9 septembre 2021, les versions 11 Alexandria de RAD Studio, Delphi et C++Builder contiennent leur lot de nouveautés, de mises à jours et de correctif.
Les fonctionnalités essentielles ont été présentées par Embarcadero lors de plusieurs sessions en ligne ayant suscité un grand nombre de questions de la part des spectateurs et développeurs.
Plutôt que de se contenter de traduire la présentation de départ, Patrick Prémartin vous propose une revue des documents de sortie avec bien entendu un point sur chaque nouveauté mais aussi sur les choses un peu moins visibles et quelques points potentiellement bloquants.
Liens, sources et rediffusion sont disponibles sur le site https://serialstreameur.fr/webinaire-20210924.php
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
Un petit tour des pratiques et outils de capacity planning. Graphite, JMX Trans, JMeter (sans frein à main), et leurs amis Amazon EC2, jenkins, VisualVM … Et en bonus la basic-web-perf application pour tester votre infrastructure à blanc !
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Lors de cette session nous ferons un tour d’horizon des solutions NoSQL présentes dans Azure telles que DocumentDB, HBase, les Tables Azure, Datastax Enterprise / Cassandra, MongoDB et bien d’autres. Venez découvrir les solutions que propose Azure via des solutions natives ou via l’intégration de solutions open source ayant fait leurs preuves.
Lors de cette session nous ferons un tour d’horizon des solutions NoSQL présentes dans Azure telles que DocumentDB, HBase, les Tables Azure, Datastax Enterprise / Cassandra, MongoDB et bien d’autres. Venez découvrir les solutions que propose Azure via des solutions natives ou via l’intégration de solutions open source ayant fait leurs preuves.
Rappel des différents services de stockage NoSQL présents dans Microsoft Azure, puis approfondissement du service DocumentDB, ses fonctionnalités ainsi que les options d'administration.
[Café Techno] Les évolutions de TSM v6.3.4 et bientôt 7.1Groupe D.FI
TSM évolue encore et toujours, dans la prise en charge des très grosses volumétries, dans le traitement de la sauvegarde virtualisée et l'évolution des agents à chaud. Lors de café-techno, nous vous avons présenté les nouveaux outils d'administration et de reporting proposés par la version 6.3.4 et annoncés pour la version 7.1, en fin d'année
Monitoring applicatif : Pourquoi et comment ?Kenny Dits
Vous êtes développeur, chef de projet technique ou même responsable et vous souhaitez avoir de la visibilité sur le fonctionnement de vos applicatifs, ou sur la plateforme sur laquelle ils sont hébergés ?
Nous étudierons comment, grâce à des outils simples (StatD / Graphite / Log BDD) et nos expériences chez M6Web, mettre en place un monitoring applicatif ultra complet.
Ce monitoring vous permettra de retrouver la vue sur vos projets, pour mieux anticiper la charge, detecter la root cause en cas d'incident et connaitre l'état de chacun de vos services ...
3. •Les besoins du projet AFP twitter-foot
•Présentation de Redis
•Manipuler des tweets avec Storm
•Implémenter des fenêtres glissantes
•Testabilité du cluster
•Monitoring et supervision
•Débogage et bonnes pratiques
4. •Plus de 7000 comptes twitter référencés par l’AFP
•5 ligues de football suivies
•Jusqu’à 170 tweets par seconde
•Recherche de tendances sur les hashtags
•Classements de popularité de joueurs / équipes et panelistes
•Des timelinesde tweets par ligue, par équipe et par matches en live
7. •Utilisation de Storm pour le tri des tweets reçus, et la recherche de mots clé
•Utilisation de Redis comme queue pour le flux d’entrée
•Utilisation de Redis pour la gestion et le stockage des timelines
•Serveur Web Services REST (Jetty)
Cluster de 7 serveurs en toutpour le backend
9. •Datastorede type Key / Value
•Données en RAM uniquement
•Implémentation en C ANSI
•Monothreadé
•Support de publish/ subscribe
•Communication sur TCP avec protocole spécifique
•Nombreux clients disponibles en divers langages
•Sponsorisé par Pivotal
10. Parmi les applications reposant sur redis on retrouve: StackOverflow, Github, Pinterest, Flickr, Snapchat… et Twitter!
Redis est notamment utile pour
•Améliorer les performances d'une base de données (MySQL, MongoDB…)
•Gérer finement un cache applicatif
•Traiter des statistiques et des classements
•Servir de Message Broker et gérer des notifications entre applications
Redis est un vrai couteau suisse!
11. "Bad programmers worry about the code. Good programmers worry about data structures and their relationships." L. Torvalds
Structures disponibles
•Les sets
•Les listes
•Les hashes
•Les strings
•Les bitmaps
•Les HyperLogLogs
•Les Sorted Sets
12. •Notion de score par élément (stocké en tant que "double" soit 64 bits mais 53 bits significatifs seulement)
•Récupération d’un ensemble d’éléments par leurs positions ou leurs scores
•Implémentation via des skip-listset des hashsetsassurant des performances élevées
•Utilisation documentée permettant notamment de calculer avec précision le coût des requêtes effectuées
•La performance élevée implique néanmoins une occupation mémoire supérieure aux structures classiques
13. •ZADD ajoute un élément à un ZSET avec un score
•ZINCRBY incrémente le score d'une valeur choisie
•ZRANGE récupère une plage d'éléments par leur index défini par leur score (plus petit au plus grand): idéal pour un classement (les 10 meilleurs par exemple)
•ZRANGEBYSCORE récupère une plage d'éléments dans un intervalle de scores (score entre 5 et 10…)
15. •Utilisation de tweets comme valeurs dans un ZSET et utilisation du Tweet ID comme score
•Timelinesde tweet ordonnancées par tweetid: chronologie respectée
•Plus récent: tweet id le plus élevé (snowflakele garantit)
•Utilisation de tweets comme valeurs dans un ZSET et du nombre de retweets comme score
•Classement des tweets les plus retweetés
16. 22:04:41:524652515665915905:nicolas_vilas:RTcount=0:Une action de David Luiz qu'on risque de revoir... en boucle #APOELPSG
profiles=["JRNL"] teams=["NEUTRAL"] leagues=["FRAL1"]
22:04:33:524652479569752065:NikoB19:RTcount=0:Tous les matchs sur Bein(sauf Porto -Bilbao) sont joués, je file à la douche en espérant un but parisien.
profiles=["BLOG"] teams=["LENS"] leagues=["FRAL1"]
22:04:23:524652438729416704:PSG_inside:RTcount=31:57' Sauvetage de @DavidLuiz_4 sur la ligne Parisienne ! Corner pour l'@apoelfcofficial. #APOELPSG
profiles=["TEAM"] teams=["PSG"] leagues=["FRAL1"]
22:04:11:524652387664158720:Gibney_A:RTcount=1:WOW. So close to a goal. David Luiz clearsa header off hisownline.
profiles=["JRNL"] teams=["LILL"] leagues=["FRAL1"]
22:04:08:524652374439493632:RemDenjean:RTcount=0:#Maxwell est vraiment un très grand footballeur: professionnel, classe, talentueux, combattif... L'une des meilleures recrues du PSG 2.0! profiles=["TEAM"] teams=["TOUL"] leagues=["FRAL1"]
Score
524652515665915905
Score
524652479569752065
Score
524652438729416704
Score
524652387664158720
Score
524652374439493632
ZSET "timeline"
Les valeurs contiennent le JSON
Les scores sont les tweet ids
17. Les opérations sur ZSET sont majoritairement en O(log(N))
•ZSCORE est en O(1)
•ZADD est en O(log(N)) avec N le nombre d'éléments dans le ZSET
•ZINCRBY est en O(log(N)) avec N le nombre d'éléments dans le ZSET
•ZRANGE est en O(log(N) + M) avec N le nombre d'éléments dans le ZSET et M le nombre d'éléments retournés
18. •Clusterisationen beta ou à faire manuellement, difficile à réaliser
•Pas de "rollbacks" de transactions
•La persistance des données a un impact sur les performances dans les deux modes proposés
•Le mode par défaut de persistance peut perdre des données en cas de crash
•Tout est en mémoire RAM, attention aux leakset aux Out-of-memory!
•Pas de version windowsofficielle (mais il existe un port)
•Intégration à Java minimale mais suffisante (Jedis, Spring-redis)
19. •Les tweets idssont ordonnancés chronologiquement (snowflake), les timelinessont faciles à gérer via des SortedSet
•Utilisation du tweet id comme score pour les timelines
•Utilisation du tweet id comme valeur pour les autres classements (retweets, mots-clé…)
•Performances élevées en accès aux données et en débit
•Un datastoreà la complexité modérée et au coût d'entrée faible
•Intégration facile avec Storm
•Perdre quelques tweets n'est pas (si) important
21. 1.Utilisation de la connexion hosebirdvers twitter alimentant une queue redis
2.Récupération des messages twitter depuis Redis via un Spoutdédié
3.Définition de divers streamsen Storm pour le traitement des tweets
4.Stockage des résultats dans Redis
Twitter-feeder
Hosebird
Redis
SpoutStorm
"Raw" BoltStorm
Alimentation
Queue
Dirty check queue
Emission des tuples
Twitter
Création des streams
23. •Recherche de mots-clédivers
•Classement de joueurs via liste de mots clé
•Classement d'équipes
•Classements des hashtags populaires
•Classements des tweets les plus retweetés
•Classements des comptes twitter les plus actifs
•Recherche de médias: images / vidéos
•Croisement avec des données journalistiques du bureau des sports
24. •Configuration stockée en JSON dans Redis
•Spoutsde configuration sur divers thèmes
•Dirty check de clés de configuration sur Redis
•Envoi de la nouvelle configuration en tant que tuplesi changement détecté
Redis
Spoutde configuration
Boltsabonnés au Stream
de configuration
Dirty check
de la configuration
Serveur manager des configurations
Changement de la configuration
dans redis
25.
26.
27. Pour améliorer les performances, plusieurs solutions:
•Augmenter le nombre d'Executors
•Augmente le nombre de threads s'exécutant sur le Bolt/ Spoutconcerné dans le cluster
•Limitation par le nombre de CPU disponibles sur le cluster avec / sans Hyperthreading
•Augmenter le nombre de Tasks
•Revient à augmenter le nombre d'instances du Bolt/ Spoutconcerné dans le cluster
•Changer le design applicatif / algorithmes utilisés
28. Le livrable de Storm est simple: Jar contenant la topologie
•Peu lié aux spécificités du runtimedu cluster Storm
•Corriger une erreur de design interne est donc plus facile lors des montées de version
•Le refactoringest donc encouragé
La difficulté dans l'usage de Storm se trouve autant dans le développement que dans l'administration du cluster. Plusieurs options (cumulables):
•Soyez / devenez DevOps
•Chouchoutez votre administrateur système / réseau
•Optez pour une solution Cloud
30. •Parcours d'un itérablesur un nombre fixe de n éléments
•Cet itérableest peuplé de nouvelles données au fur et à mesure
•Eviction des données trop anciennes
•Utilisation possible pour le calcul de débits en "live"
•Bande passante utilisée
•Occurrence de mots clé
31. •Choix d'une durée pour la fenêtre
•les 15 dernières minutes
•Choix d'une fréquence de calcul
•MAJ toutes les 5 secondes
•Comptage du nombre de tweets dans une structure adaptée
•Rolling buffers, zsets…
•Le résultat donne un quotient de tweets par seconde
•débit "live" de 35 tweets par seconde basé sur le nombre de tweets reçus des 15 dernières minutes, recalculé toutes les 5 secondes
32. Storm peut servir à calculer des fenêtres glissantes (SlidingWindow)
•Chaque donnée possède un timestampqui permet de calculer son éligibilité aux fenêtres glissantes
•Un buffer en mémoire représentant la fenêtre glissante compte les occurrences d'une donnée choisie sur une période donnée
•Une tâche calcule le débit à intervalle régulier
Deux outils sont fournis et documentés avec Storm pour cet effet
•Les Ticktuples
•Les rollingbuffers
33.
34. •Un Boltde type "Map" émet des éléments individuellement
•Un Boltde type "Reduce" s'abonne au Bolt"Map" en fieldgrouping
•Stockage dans un buffer in-memory des éléments reçus et du nombre de leurs occurrences
•Emission d'un Tuple"résumé" périodiquement grâce aux TickTuples
•Un Boltde type "Ranker" récupère les résultats de tous les types "Reduce" et calcule le résultat
35. Pour réaliser une SlidingWindowen Redis, il suffit de stocker les données brutes de comptage en tant que ZSET sur une unité de temps choisie (minute, heure, jour…)
Quand on désire calculer les valeurs finales, il suffit de réaliser un ZUNION qui additionne les clés ZSET choisies en produisant un ZSET des résultats
Ronaldo:1
Ribery:2
Messi:1
Ronaldo:3
Messi:2
Ronaldo:4
Messi:3
Ribery:2
players:23h00
players:23h01
players:23h02
players:current-ranking
ZUNION des 3 dernières minutes
Exécution toutes les minutes
36. Implémentation Storm
•Permet de faire du Map-Reduceefficacement
•Nettoyage des buffers auto-gérépar les structures fournies
•Utilise la RAM JVM, ce qui peut donner un Out-of-memory détruisant le Workeret pouvant perdre les données du buffer en cours
Implémentation Redis
•Données brutes dans Redis: facilement auditable
•Pas de pertes de buffers lors d'un crash de workerStorm
•Utilise la RAM Redis, attention au Out-of-memory
•Nettoyage des valeurs dans Redis manuel
•Ajoute de la charge sur Redis
38. •Technique permettant de valider une fonctionnalité par l'exécution de tests (avec succès)
•S'apparente à un test de type "boîte noire" en mode End-to-End
•Il est possible d'intégrer ce mode de validation dans un processAgile
39. •Framework de tests permettant la mise en place de tests d'acceptance
•Ecrit originellement en Ruby mais porté en Java (entre autres)
•Utilisation de Domain SpecificLanguage(DSL) pour décrire les tests
•Fonctionne avec JUnit, Mockito
40. Feature: Top N of playersin the global timeline.
Scenario Outline: : Player appearsin the tweet.
Givena panelistfor the league"<League>"
And the playerkeyword is"<Keyword>"
Whenthe panelisttweets "<Tweet>"
Thenthe global playercounterof "<Keyword>" is1
Examples:
| League | Keyword | Tweet |
| FRAL1 | Lucas Deaux| Le milieu Lucas Deauxest la révélation de cette année |
| ENGL1 | ZatKnight | The best central defender isZatKnight |
Scenario: Player appearsin the beginningof the tweet.
Givena panelist
And the playerkeyword is"Djordjevic"
Whenthe panelisttweets "Djordjevicne restera malheureusement pas nantais l'an prochain"
Thenthe global playercounterof "Djordjevic" is1
41. •Cucumberest appelé depuis un Test JUnit(Runnerspécifique)
•La featureCucumberest parsée
•Une classe "StepDefs" Java est appelée par Cucumber
•Cucumbermatche les phrases du scénario à des méthodes Java
•Via des annotations: @Given@When@Then
•Utilisation de RegExp: "^the global player counter of "([^"]*)" is (d+)$"
•Cucumberexécute les méthodes et injecte les paramètres définis dans le scénario
•JUnitdonne le résultat du test
42. Le déroulement d'un test donne
1.Une phase de préparation démarre la topologie et initialise les données dans le Redis de test
2.L'exécution du scénario de test simule l'arrivée d'un tweet forgé dans Redis
3.L'application Storm dans le cluster local de test traite le tweet et stocke le résultat dans le Redis de test
4.L'assertion définie dans Cucumberest exécutée et donne un reporting, par exemple un polling sur Redis vérifiant la valeur d'un compteur
5.Si la featureCucumbercontient d'autres scénarios ils sont exécutés 1 à 1
6.La phase terminale du test stoppe le cluster et nettoie le redis de test
La topologie de test n'est donc pas redémarrée à chaque test ("scenario") pour diminuer le temps d'exécution
43. Il est souhaitable d'avoir des tests End-to-End dans une application Storm pour
•Faciliter le débogage
•Documenter les fonctionnalités
•Eviter les régressions
Néanmoins les tests sont coûteux à maintenir au fil des évolutions de l'applicatif
•Les tests avec mockscomplexes sont "fragiles"
•La non maintenance des tests signifie leurs morts
•Sans implication d'un membre de la partie métier, cela ne restera qu'un outil de développeur
46. •Création d’artifactszip via Mavenpour chaque serveur
•Scripts pour toutes les tâches courantes (MAJ configuration, restart, etc)
47. •Scripts de redémarrage de process
•Supervision du CPU et de la RAM
•DSL avancé de configuration
check processredis-server
withpidfile"/var/run/redis.pid"
startprogram = "/etc/init.d/redis-server start"
stop program = "/etc/init.d/redis-server stop"
if 2 restartswithin3 cycles thentimeout
if totalmem> 7000 Mb thenalert
if cpuusage > 95% for 3 cycles thenrestart
if failedhost 127.0.0.1 port 6379 thenrestart
if 5 restartswithin5 cycles thentimeout
48.
49. Redis-rdb-toolsest un parserde dump Redis de type "RDB"
•Permet l'audit des clés d'une instance en mode "offline"
•Calcul approximatif de l'espace occupé de chaque clé de l'instance
50. Redmonet RedisLivesont des outils de monitoring de Redis en live
•Accès au slowlog(requêtes les plus longues)
•Informations sur la mémoire (occupation, fragmentation)
•Aperçu des structures de données utilisées dans l'instance
52. L'architecture Storm + Redis est très distribuée, par conséquent fixer (trouver) un bug peut devenir un vrai challenge
Pour éviter un coût de maintenance élevé et s'assurer la pérennité de l'application, il faut éviter de cumuler les problématiques au même endroit
L'outil Sonar est un moyen utile de surveiller le projet
53. •Séparer l'action (Boltd'action) de la condition (Boltde contrôle)
•Séparer l'insertion de résultat dans Redis de son nettoyage
•Utiliser des design patterns: Strategy, Chain of Responsibility…
Une séparation plus extrême consiste à définir plusieurs topologies
•Communication entre topologies assurées par un élément externe (Redis par exemple)
•Audit facilité des problèmes
•Meilleure testabilité
•Meilleure maintenabilité
•Meilleure robustesse
•Nécessite plus de workersStorm (1 workerne sert qu'une seule topologie)
•Permet de faire de la pseudo QoSsur des topologies
54. •Tracer les tuplesnaviguant dans une topologie est utile
•Débogage plus facile
•Audit de performances
•Ajouter un objet "espion" dans chaque streampeut servir à cet effet
•Ajouter le nom de chaque Bolttraversé
•Chronométrer le temps passé dans chaque Boltou méthode de Bolt
•Garder une trace de certains tests métier
•Certains bugs sont difficiles à reproduire avec Storm, aussi, avoir de bons logs peut grandement aider aux fixes
55. •Redis est un stockage temporaire dans notre modélisation
•Chaque entrée doit être nettoyée à un moment donné
•Il est important d'être rigoureux dans le référencement de clés afin d'éviter les leakset de faciliter le débogage
•Le format des données insérées est aussi important, l'utilisation de standards peut grandement aider: json-schema, XSD, DTD…
•Une bonne méthode est de séparer les tâches d'insertion des tâches de suppression
•Bolts/ Spoutsdifférents
•Topologies différentes
56. •Redis supporte Luanativement
•Comme Redis est monothreadé, aucune requête redis n'est effectuée pendant l'exécution d'un script Luaen parallèle
•Un script Luaest donc atomique sur une instance Redis
•Luapermet d'éviter des round-trips réseau
•Possibilité d'utiliser la librairie cjsonen Luaainsi que MSGPACK qui permet de compresser les données JSON