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
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
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
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
Devoxx 2016 - Dropwizard : Création de services REST production-readyAlexander DEJANOVSKI
Slides accompagnant le TIA en live coding donné à Devoxx France 2016 sur la création de services REST avec Dropwizard, l'utilisation d'Hystrix comme circuit breaker et Feign pour créer des clients REST.
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.
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.
De l'upsert sur des fichiers Parquet ? Retrouver l'état de mes données de mercredi dernier ? Des transactions ACID sur mon datalake ? C'est désormais possible avec DeltaLake, la nouvelle librairie de Databricks.
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
Après les 2 précédents ateliers Varnish, c’est au tour d’ElasticSearch de passer entre les mains Ludovic Piot (Oxalide) avec Edouard Fajnzilberg (Kernel42) . Ils ont déroulé le sujet avec les points de vue Syadmin et Dev.
Subject: Oxalide's workshop about an overview of elasticsearch.
Date: 10-mar-2016
Speakers: Edouard Fajnzilberg (Kernel42) and Ludovic Piot (Oxalide)
Language: french
Video capture: https://youtu.be/3bPoeVoUdFI
Main topics:
When do we use elasticsearch?
Why is it cool?
Introduction to Head plugin
Introduction to the REST API
Introduction to the Query DSL and the JSON document
How to configure a cluster?
How does it compare to a SGBD-R?
How does a reversed-index work?
An explaination of Lucene Segments
An explaination of the cluster architecture
An overview of the mappings (principles, dynamic mapping and templates)
An overview of the aggregations (buckets, metrics, multiple, nestable, sortable, aggregation types, use cases, pipelines)
An overview of the ecosystem (Sense, Logstash, Beats, Kibana, TimeLion, Marvel, Watcher, Shield, Head, Kopf, HQ, Inquisitor, BigDesk, SegmentSpy)
Spark meetup www.meetup.com/Paris-Spark-Meetup/events/222607538/
La dernière version de Spark nous apporte une nouvelle API inspirée des librairies et langage d'analyse statistique. Nous verrons comment Spark Dataframe nous permet de simplement manipuler et explorer les données en conservant la scalabilité de Spark RDD
Cette étude porte sur la brique Spark SQL de la plateforme Apache Spark.
L'objectif est de présenter les concepts et les fonctionnalités de spark SQL.
Les points abordés sont :
- Architecture
- API de Spark SQL
- Opérations sur DataFrames/DataSets
- Opérations relatives au nettoyage de données
- Opérations de conversion (DataFrame, DataSet, Collection, RDD)
- Opérations relationnelles
S.M.A.C.K, Spark-Mesos-Akka-Cassandra-Kafka, fait partie des nouvelles générations d’architectures “BigData” open source proposant une alternative et / ou une complémentarité à Hadoop / Map-Reduce.
À la différence the Hadoop / Map-Reduce qui fournit une architecture permettant de paralléliser les I/O disque et réseau, S.M.A.C.K utilise d’avantage la mémoire ce qui permet de libérer les CPUs des tâches de I/O et ainsi augmenter les capacités de calcul pour un même cluster. L’architecture S.M.A.C.K, et Spark en particulier, est particulièrement plébiscitée par la communauté autour de la Data Science.
Il s’agit d’une architecture ”BigData” très populaire qui se trouve être un assemblage de services spécialisés à la différence d’une solution unique implémentant une liste de patterns et principes ce qui lui apporte une grande flexibilité mais également une certaine complexité.
Devoxx 2016 - Dropwizard : Création de services REST production-readyAlexander DEJANOVSKI
Slides accompagnant le TIA en live coding donné à Devoxx France 2016 sur la création de services REST avec Dropwizard, l'utilisation d'Hystrix comme circuit breaker et Feign pour créer des clients REST.
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.
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.
De l'upsert sur des fichiers Parquet ? Retrouver l'état de mes données de mercredi dernier ? Des transactions ACID sur mon datalake ? C'est désormais possible avec DeltaLake, la nouvelle librairie de Databricks.
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
Après les 2 précédents ateliers Varnish, c’est au tour d’ElasticSearch de passer entre les mains Ludovic Piot (Oxalide) avec Edouard Fajnzilberg (Kernel42) . Ils ont déroulé le sujet avec les points de vue Syadmin et Dev.
Subject: Oxalide's workshop about an overview of elasticsearch.
Date: 10-mar-2016
Speakers: Edouard Fajnzilberg (Kernel42) and Ludovic Piot (Oxalide)
Language: french
Video capture: https://youtu.be/3bPoeVoUdFI
Main topics:
When do we use elasticsearch?
Why is it cool?
Introduction to Head plugin
Introduction to the REST API
Introduction to the Query DSL and the JSON document
How to configure a cluster?
How does it compare to a SGBD-R?
How does a reversed-index work?
An explaination of Lucene Segments
An explaination of the cluster architecture
An overview of the mappings (principles, dynamic mapping and templates)
An overview of the aggregations (buckets, metrics, multiple, nestable, sortable, aggregation types, use cases, pipelines)
An overview of the ecosystem (Sense, Logstash, Beats, Kibana, TimeLion, Marvel, Watcher, Shield, Head, Kopf, HQ, Inquisitor, BigDesk, SegmentSpy)
Spark meetup www.meetup.com/Paris-Spark-Meetup/events/222607538/
La dernière version de Spark nous apporte une nouvelle API inspirée des librairies et langage d'analyse statistique. Nous verrons comment Spark Dataframe nous permet de simplement manipuler et explorer les données en conservant la scalabilité de Spark RDD
Cette étude porte sur la brique Spark SQL de la plateforme Apache Spark.
L'objectif est de présenter les concepts et les fonctionnalités de spark SQL.
Les points abordés sont :
- Architecture
- API de Spark SQL
- Opérations sur DataFrames/DataSets
- Opérations relatives au nettoyage de données
- Opérations de conversion (DataFrame, DataSet, Collection, RDD)
- Opérations relationnelles
S.M.A.C.K, Spark-Mesos-Akka-Cassandra-Kafka, fait partie des nouvelles générations d’architectures “BigData” open source proposant une alternative et / ou une complémentarité à Hadoop / Map-Reduce.
À la différence the Hadoop / Map-Reduce qui fournit une architecture permettant de paralléliser les I/O disque et réseau, S.M.A.C.K utilise d’avantage la mémoire ce qui permet de libérer les CPUs des tâches de I/O et ainsi augmenter les capacités de calcul pour un même cluster. L’architecture S.M.A.C.K, et Spark en particulier, est particulièrement plébiscitée par la communauté autour de la Data Science.
Il s’agit d’une architecture ”BigData” très populaire qui se trouve être un assemblage de services spécialisés à la différence d’une solution unique implémentant une liste de patterns et principes ce qui lui apporte une grande flexibilité mais également une certaine complexité.
Cryptographie: Science mathématique permettant d’effectuer des opérations sur un texte intelligible afin d’assurer une ou plusieurs propriétés de la sécurité de l’information .
C'est une leçon interactive qui vise à expliquer r les homophones de niveau EB3.
Objectif:savoir les homophones.
Contenu:explication des homophones,exercices,homophones grammaticaux,exercices en liens,
Niveau:EB3
Besoins: -apprendre les homophones
-utiliser les homophones
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogiqueMaud RABER
Ateliers expérientiels pour les coachs, facilitateurs et managers souhaitant développer leur capacité à travailler en intégrant le corps dans leurs interventions et relations professionnelles
Articulé autour de C++ 11, cette session amène celui qui y assiste aux fondamentaux du développement logiciel : libraries, dépendances, TR1 et C++0X les fondations de C++ 11, runtime C alias CRT, runtime C++ alias STL, agilité en C++, ALM en C++, Windows 8 et C++, C++ et Windows 8 avec le nouveau modèle COM nommé WRL.
data.table est un package qui facilite et accélère les opérations de filtrage, création et mises à jours de variables et d'agrégation d'un tableau de donénes.
JAVA n'a plus de secret pour vous. Créer un projet, le passer de maven à graddle, enlever Spring, remplacer Guava par les API de Java 8 vous le faites sans même réfléchir. Vous avez essayé Python et la ce n'est plus la même affaire. Passé le "Hello World", quand il a fallu faire un projet de la vrai vie le courage vous a quitté. Cette conférence donnera les clefs pour bien débuter en Python quand on est un dev JAVA. Python 2 ou Python 3, choix d'un IDE, outils de build, contrôle de code, gestion des dépendances, choix des librairies, documentation, ressources indispensables à connaitre...
Comme des millions de développeurs, vous utilisez C# quotidiennement … mais en maitrisez-vous les subtilités ? Cette session ludique vous plongera au cœur de votre langage de prédilection au travers programmes et exemples de code qui ne cesseront de vous surprendre. Avec en prime quelques (petits) lots à gagner pour les développeurs les plus perspicaces !
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
Ces nouvelles fonctionnalités introduites à partir de Java 7 nous permettent de parallèliser nos traitements simplement, voire gratuitement. Nous allons donc pouvoir utiliser pleinement nos multicoeurs avec un minimum d'efforts. Quels sont ces nouveaux patterns, quels gains en performance pouvons-nous en attendre, à quels nouveaux bugs serons-nous confrontés ? Une heure pour répondront à chacun de ces points, en introduisant les nouveaux problèmes et leurs solutions. Une heure pour comprendre comment nos habitudes de programmation vont devoir évoluer, et à quoi la programmation parallèle en Java ressemblera-t-elle demain.
Nommer les choses est difficile, les trouver encore plus, surtout dans une infrastructure comme Criteo constituée de plus de plus de 1500 types de services fonctionnant sur 30 000 nœuds répartis sur 8 DCs !
HashiCorp Consul et son système de découverte de services permet de mélanger conteneurs et machines physiques, de passer d'un système de machine dédiées à une architecture de services dynamiques, d'une topologie physique à une topologie virtuelle dynamique.
Nous verrons comment Criteo réparti la charge sur son infrastructure avec des mécanismes variés: HaProxy, F5 (matériels) ou des bibliothèques côté client (Client Side Load Balancing) et de basculer à terme vers du ServiceMesh - que nous expliquerons - en utilisant Consul.
Cette présentation est à destination de développeurs ou d'Ops qui pourrons découvrir une vision d'architecture au delà d'une simple présentation du produit.
Nous expliquerons également comment Criteo est devenu premier contributeur externe à Consul, et quelques unes de nombreuses optimisations que nous avons dû y apporter de manière à en faire un des fondements de notre infrastructure.
https://cfp.devoxx.fr/2019/talk/QAF-5196/Consul@Criteo:_Des_services_un_peu,_des_machines_beaucoup,_du_ServiceMesh_bientot
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
Tallk présenté à Devoxx avec Bachir Ait M'Barek : https://www.linkedin.com/in/baitmbarek
C’est la révolution dans la BI, les zones tampon FTP laissent la place aux systèmes de fichier distribués, le SQL s'exécute sur Hadoop, les dashboard en HTML5 remplacent les clients lourds, mais ne peut-on pas rationaliser un peu l’approche ?
Comment s’y prendre pour transformer une chaine BI en datalake ?
Cette université fera le tour de l’ingénierie des données en mode BigData. Au travers d’une présentation détaillée des concepts, de retour d’expériences et d’un cas pratique, nous allons découvrir :
les technologies et l’architecture, avec Spark, Kafka, Elasticsearch, Impala et Mesos,
et les méthodes associées : cycle de développement avec Hadoop, tests unitaires, jointures, gestion de la qualité de donnée, recette en mode Big Data et gestion des métadonnées.
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
Après maints périples, vous avez progressivement amélioré votre capacité à gérer des environnements au travers d'Infra as Code. Votre code initialement simple a pris de l'embonpoint et vous sentez la réalité vous rattraper implacablement : vous êtes en train de créer de la complexité, voire même de la dette.
Loin d'être une fatalité, à partir de notre expérience de développeur (Fabien) et d'ops (Alexandre), nous vous proposons un road trip dans des
pratiques de développement déclinées sur l'Infra as Code (Bash, Puppet et Ansible).
Nous présentons des pratiques, des plus simples activables immédiatement à des démarches plus complexes pour dessiner une big picture de l'Infra as Code, de ses contraintes, de ses forces et de ses pièges.
* Comment mettre en place des boucles de feedback les plus courtes possibles ?
* Comment faire du test driven development sur l'infrastructure ?
* Quels patterns et outils pour tester une configuration sans tirer toute votre infra et itérer plus rapidement ?
* Quel est le rapport entre Tetris, un ascenceur et l'Infra as Code ?
Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
2. #DevoxxFR
Un peu de moi
Duy Hai DOAN
Evangéliste technique & consultant Apache Cassandra
• talks, meetups, confs
• projet open-source (Achilles, Apache Zeppelin)
• Des questions sur Apache Cassandra/Apache Zeppelin ?
☞ duy_hai.doan@datastax.com
☞ @doanduyhai
2
3. #DevoxxFR
Datastax
• Fondé en Avril 2010
• Plus gros pourvoyeur de contributeur à Apache Cassandra™
• Bureaux européens à Londres, Paris et Berlin
• Datastax Enterprise = OSS Cassandra + fonctionnalités+++
3
5. #DevoxxFR
Le défi
5
Dans un système distribué,
définir les conditions suffisantes à respecter
pour garantir la convergence des données
potentiellement désynchronisées
6. #DevoxxFR
Le défi
6
Dans un système distribué,
définir les conditions suffisantes à respecter
pour garantir la convergence des données
potentiellement désynchronisées
7. #DevoxxFR
Le défi
7
Dans un système distribué,
définir les conditions suffisantes à respecter
pour garantir la convergence des données
potentiellement désynchronisées
8. #DevoxxFR
Le défi
8
Dans un système distribué,
définir les conditions suffisantes à respecter
pour garantir la convergence des données
potentiellement désynchronisées
9. #DevoxxFR
CRDT
9
Conflict-free Replicated Data Types
Définit les conditions suffisantes pour un système
"strong eventually consistent"
Autorise une disponibilité extrême, N-1 nœuds en panne
sur N nœuds au total
10. #DevoxxFR 10
Types de CRDT
À état: Convergent Replicated Data Types (CvRDT)
Par fonction: Commutative Replicated Data Types (CmRDT)
11. #DevoxxFR
CvRDT: conditions d’application
11
Tous les réplicas sont connectés (en général)
Échange d’état au moins 1 fois, sur un médium ponctuellement
fiable
L’ensemble des états forme un demi-treillis borné
Tous les changements d’état transitionnent vers un nouvel état en
suivant l’ordre partiel
12. #DevoxxFR
CvRDT: conditions d’application
12
Tous les réplicas sont connectés (en général)
Échange d’état au moins 1 fois, sur un médium ponctuellement
fiable
L’ensemble des états forme un demi-treillis borné
Tous les changements d’état transitionnent vers un nouvel état en
suivant l’ordre partiel
13. #DevoxxFR
CvRDT: conditions d’application
13
Tous les réplicas sont connectés (en général)
Échange d’état au moins 1 fois, sur un médium ponctuellement
fiable
L’ensemble des états forme un demi-treillis borné
Tous les changements d’état transitionnent vers un nouvel état en
suivant l’ordre partiel
Ensemble d’éléments partiellement ordonnés
ayant un borne supérieure (merci Wikipedia)
14. #DevoxxFR
CvRDT: conditions d’application
14
Tous les réplicas sont connectés (en général)
Échange d’état au moins 1 fois, sur un médium ponctuellement
fiable
L’ensemble des états forme un demi-treillis borné
Tous les changements d’état transitionnent vers un nouvel état en
suivant l’ordre partiel
16. #DevoxxFR
CvRDT: définition
16
A join semilattice (or just semilattice hereafter) is a partial order ≤v
equipped with a least upper bound (LUB) ⊔v, defined as follows:
Definition 2.4 m = x ⊔v y is a least upper bound of {x, y} under ≤v iff
x ≤v m and
y ≤v m and
there is no m′ ≤v m such that x ≤v m′ and y ≤v m′
It follows from the definition that ⊔v is: commutative: x ⊔v y =v y ⊔v x;
idempotent: x ⊔v x =v x; and associative: (x⊔v y)⊔v z =v x⊔v (y⊔v z).
18. #DevoxxFR
CvRDT: exemple G-Set
18
Payload
Set S, initial value S := { }
Query(e)
e ∈ S ?
Update
add(e): S := S ∪ {e}
Merge(S’)
S := S ∪ S’
relation d’ordre ≤v = ∈
opérateur ⊔v = ∪
l’union ensembliste ∪ est
commutative, associative et
idempotente
19. #DevoxxFR
relation d’ordre ≤v = ∈
opérateur ⊔v = ∪
l’union ensembliste ∪ est
commutative, associative et
idempotente
CvRDT: exemple G-Set
19
Payload
Set S, valeur initiale S := { }
Query(e)
e ∈ S ?
Update
add(e): S := S ∪ {e}
Merge(S’)
S := S ∪ S’
Problème: comment
gérer les suppressions
d’éléments dans
le Set ?
20. #DevoxxFR
CvRDT: 2P-Set
20
Payload
Set A, R initial value A := { } , R := { }
Query(e)
(e ∈ A) ∧ (e ∉ R) ?
Update
add(e): A := A ∪ {e}, remove(e): R := R ∪ {e}
Merge(A’, R’)
A := A ∪ A’, R := R ∪ R’
27. #DevoxxFR
Cassandra LWW
Et si t1 == t2 ? (précision timestamp à la ms)
Les DELETE sont prioritaires sur les INSERT/UPDATE
Comparer les valeurs par l’ordre de leur type (String, Date …) et
prendre la valeur la plus élevée
28. #DevoxxFR
Et si t1 == t2 ? (précision timestamp à la ms)
Les DELETE sont prioritaires sur les INSERT/UPDATE
Comparer les valeurs par l’ordre de leur type (String, Date …) et
prendre la valeur la plus élevée
Cette règle est-elle ?
- commutative
- associative
- idempotente
Cassandra LWW
29. #DevoxxFR
Cassandra LWW
Associativité
[("toto", t1), ("titi", t1)], ("tata",t1) à [("toto", t1), ("tata",t1)] à ("toto", t1)
("toto", t1), [("titi", t1), ("tata",t1)] à [("toto", t1), ("titi",t1)] à ("toto", t1)
Commutativité
("toto", t1), ("tata",t1) à ("toto", t1)
("tata", t1), ("toto",t1) à ("toto", t1)
Idempotence
("toto", t1), ("toto",t1) à ("toto", t1)
32. #DevoxxFR
Le défi
32
Dans un système distribué,
définir un algorithme
garantissant des lectures atomiques
sur des opérations multi-partitions
33. #DevoxxFR
Le défi
33
Dans un système distribué,
définir un algorithme
garantissant des lectures atomiques
sur des opérations multi-partitions
34. #DevoxxFR
Le défi
34
Dans un système distribué,
définir un algorithme
garantissant des lectures atomiques
sur des opérations multi-partitions
Pas de garantie d’isolation ou
d’écriture atomique
35. #DevoxxFR
Le défi
35
Dans un système distribué,
définir un algorithme
garantissant des lectures atomiques
sur des opérations multi-partitions
37. #DevoxxFR
Un peu de théorie
37
Serializability
Repeatable Read
Cursor Stability
Read Commited
Read Uncommited
Snapshot Isolation Linearizability
Causal
PRAM (Pipelined RAM)
RYW (Read Your Write)
Eventual Consistency
38. #DevoxxFR
Un peu de théorie
38
Serializability
Repeatable Read
Cursor Stability
Read Commited
Read Uncommited
Snapshot Isolation Linearizability
Causal
PRAM (Pipelined RAM)
RYW (Read Your Write)
Eventual Consistency
Coordination
synchrone
Sans
Coordination
39. #DevoxxFR
Un peu de théorie
39
Serializability
Repeatable Read
Cursor Stability
Read Commited
Read Uncommited
Snapshot Isolation Linearizability
Causal
PRAM (Pipelined RAM)
RYW (Read Your Write)
Eventual Consistency
Coordination
synchrone
Sans
Coordination
RAMP Transactions
40. #DevoxxFR
Read Atomic Multi-Partitions Transaction
Fournit une "visibilité atomique"
☞ Soit toutes les mises à jour d’une transaction sont
visibles, soit aucune ne l’est
RAMP Transaction
40
43. #DevoxxFR
Idépendance de Partition
☞ les clients n’ont besoin de contacter que les partitions
impliquées dans la transaction
Idépendance de Synchronisation
☞ la transaction d’un client ne peut bloquer les autres
clients.
☞ si le client peut accéder aux partitions de la
transaction, la transaction sera réussie à terme.
Garanties RAMP Transaction
43
59. #DevoxxFR
RAMP – Fast (Cas d’erreur)
59
Le client tombe après commit(X, t1)
☞ processus de maintenance pour valider les autres
partitions pas encore validées (force-commit)
Le client tombe après le dernier prepare
☞ processus de maintenance pour nettoyer Data[ ]
après un timeout
60. #DevoxxFR
RAMP – Fast (Cas d’erreur)
60
Le client fait un rollback(ts) après le dernier prepare
☞ enlever les valeurs écrites à ts dans Data [ ]
61. #DevoxxFR
RAMP – Fast (Coût Disque)
61
La taille des méta-données est linéairement
proportionnelle au nombre de partitions impliquées dans
la transaction
0
1
2
3
4
5
6
7
8
Taille
méta
données
1 2 3 4 5 6 7 8
Nb de partitions
81. #DevoxxFR
Détails d’implémentation
81
Réplication
☞ Attendre un ack pour N réplicas d’une partition (N
configurable)
Tâche de maintenance
☞ pour forcer un commit sur les partitions impliquées
dans une transaction ayant au moins 1 partition validée