SlideShare une entreprise Scribd logo

Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014

Ippon
Ippon

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

1  sur  47
Télécharger pour lire hors ligne
#IaaC	

Realtime Web avec Akka, Kafka,
Spark et Mesos
@hayssams
Hayssam Saleh
@jpbunaz
Jean-Philippe Bunaz
#IaaC	

Sommaire
Tomcat	

Tomcat	

FrontfacingApp	

FrontfacingApp	

Akka	

Akka	

Akka	

Akka	

Stream Processing	

(Spark Streaming)	

RealtimeViews	

(ElasticSearch)	

All Data	

(Spark)	

Precompute	

Views	

BatchViews	

Query	

(Tomcat,Kibana,…)	

NewDataStream	

Kafka	

Speed Layer	

Batch Layer	

 Serving Layer	

Product 	

Updates	

Mesos	

Marathon	

Zookeeper	

Server 1	

 Server 2	

Leader
#IaaC	

Pourquoi Akka
Mesos	

Tomcat	

Tomcat	

FrontfacingApp	

FrontfacingApp	

Akka	

Akka	

Stream Processing	

(Spark Streaming)	

RealtimeViews	

(ElasticSearch)	

All Data	

(Spark)	

Precompute	

Views	

BatchViews	

Query	

(Tomcat,Kibana,…)	

NewDataStream	

Kafka	

Speed Layer	

Batch Layer	

 Serving Layer	

Product 	

Updates	

Marathon	

Zookeeper	

Server 1	

 Server 2	

Leader
#IaaC	

Kompass
• Annuaire d’entreprise
• Moteur de recherche
• Afficher les informations
• Disponible dans 70 pays
• …
@jpbunaz
#IaaC	

Objectifs
Quelles
entreprises
sont vues	

Nombre de
visiteurs	

Mise en place d’un plan de taggage
@jpbunaz
#IaaC	

Challenge
Un tag par
prestataire	

Changer
les règles	

Informations
en session	

Intercepter les requêtes sur le serveur
@jpbunaz

Recommandé

Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big dataacogoluegnes
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysVictor Coustenoble
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 

Contenu connexe

Tendances

Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraVictor Coustenoble
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTVictor Coustenoble
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudVictor Coustenoble
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctionsMICHRAFY MUSTAFA
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetAlban Phélip
 

Tendances (20)

Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
Webinar Degetel DataStax
Webinar Degetel DataStaxWebinar Degetel DataStax
Webinar Degetel DataStax
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquet
 

En vedette

Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormParis_Storm_UG
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014Ippon
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationIppon
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Ippon
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàIppon
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Ippon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology :  Calculez vos indicateurs en temps réel ave...Petit-déjeuner OCTO Technology :  Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...OCTO Technology
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautifulIppon
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratiqueIppon
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitIppon
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Ippon
 

En vedette (20)

Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec Storm
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra application
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology :  Calculez vos indicateurs en temps réel ave...Petit-déjeuner OCTO Technology :  Calculez vos indicateurs en temps réel ave...
Petit-déjeuner OCTO Technology : Calculez vos indicateurs en temps réel ave...
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautiful
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratique
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
 

Similaire à Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014

XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauPublicis Sapient Engineering
 
Lagom framework - Touraine Tech 2018
Lagom framework - Touraine Tech 2018Lagom framework - Touraine Tech 2018
Lagom framework - Touraine Tech 2018Fabrice Sznajderman
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
Comprendre et maîtriser la performance de ses applications Spark
Comprendre et maîtriser la performance de ses applications SparkComprendre et maîtriser la performance de ses applications Spark
Comprendre et maîtriser la performance de ses applications SparkRaphael Luta
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apacheafup Paris
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.xDr Hajji Hicham
 
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...Publicis Sapient Engineering
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxAnass Nabil
 
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beamAlexandre Touret
 
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeDéveloppement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeMustapha Tachouct
 
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beamAlexandre Touret
 
Methodologie et outils d optimisation php mysql
Methodologie et outils d optimisation php mysqlMethodologie et outils d optimisation php mysql
Methodologie et outils d optimisation php mysqlCodizy
 

Similaire à Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014 (20)

Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
 
Lagom framework - Touraine Tech 2018
Lagom framework - Touraine Tech 2018Lagom framework - Touraine Tech 2018
Lagom framework - Touraine Tech 2018
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
Comprendre et maîtriser la performance de ses applications Spark
Comprendre et maîtriser la performance de ses applications SparkComprendre et maîtriser la performance de ses applications Spark
Comprendre et maîtriser la performance de ses applications Spark
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apache
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptx
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam
[orleans-tech-19] Unifiez vos traitements Batch et Streaming avec Apache beam
 
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeDéveloppement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
 
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam
[tours-jug19] Unifiez vos traitements Batch et Streaming avec Apache beam
 
Methodologie et outils d optimisation php mysql
Methodologie et outils d optimisation php mysqlMethodologie et outils d optimisation php mysql
Methodologie et outils d optimisation php mysql
 

Plus de Ippon

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ipponIppon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Ippon
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfaitIppon
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponIppon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 

Plus de Ippon (10)

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ippon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfait
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec Ippon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 

Dernier

Rapport de fin d'étude en sur le dimensionnement solaire .pdf
Rapport de fin d'étude en sur le dimensionnement solaire .pdfRapport de fin d'étude en sur le dimensionnement solaire .pdf
Rapport de fin d'étude en sur le dimensionnement solaire .pdfZakaria156221
 
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génisses
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génissesJournée Technique Trévarez - 20 février 2024 - Atelier 3 génisses
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génissesInstitut de l'Elevage - Idele
 
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiques
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiquesJournée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiques
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiquesInstitut de l'Elevage - Idele
 
Présentation de la station de Trévarez - 20 Février 2024
Présentation de la station de Trévarez - 20 Février 2024Présentation de la station de Trévarez - 20 Février 2024
Présentation de la station de Trévarez - 20 Février 2024Institut de l'Elevage - Idele
 
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projets
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projetsJournée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projets
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projetsInstitut de l'Elevage - Idele
 
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone Institut de l'Elevage - Idele
 
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...Institut de l'Elevage - Idele
 

Dernier (7)

Rapport de fin d'étude en sur le dimensionnement solaire .pdf
Rapport de fin d'étude en sur le dimensionnement solaire .pdfRapport de fin d'étude en sur le dimensionnement solaire .pdf
Rapport de fin d'étude en sur le dimensionnement solaire .pdf
 
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génisses
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génissesJournée Technique Trévarez - 20 février 2024 - Atelier 3 génisses
Journée Technique Trévarez - 20 février 2024 - Atelier 3 génisses
 
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiques
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiquesJournée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiques
Journée Technique Trévarez - 20 février 2024 - Atelier 4 leviers agronomiques
 
Présentation de la station de Trévarez - 20 Février 2024
Présentation de la station de Trévarez - 20 Février 2024Présentation de la station de Trévarez - 20 Février 2024
Présentation de la station de Trévarez - 20 Février 2024
 
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projets
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projetsJournée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projets
Journée Technique Trévarez - 20 février 2024 - Atelier 5 groupes-projets
 
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone
Journée Technique Trévarez - 20 février 2024 - Atelier 1 système bas carbone
 
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...
Journée Technique Trévarez - 20 février 2024 - Atelier 2 Réduire l’âge au vêl...
 

Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014

  • 1. #IaaC Realtime Web avec Akka, Kafka, Spark et Mesos @hayssams Hayssam Saleh @jpbunaz Jean-Philippe Bunaz
  • 2. #IaaC Sommaire Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Mesos Marathon Zookeeper Server 1 Server 2 Leader
  • 3. #IaaC Pourquoi Akka Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader
  • 4. #IaaC Kompass • Annuaire d’entreprise • Moteur de recherche • Afficher les informations • Disponible dans 70 pays • … @jpbunaz
  • 6. #IaaC Challenge Un tag par prestataire Changer les règles Informations en session Intercepter les requêtes sur le serveur @jpbunaz
  • 7. #IaaC Utilisation d’une Valve A P A C H E TOMCAT WEB APP SESSION VALVE RESPONSE REQUEST ? PARAM LOG REQUEST RESPONSE REQUEST RESPONSE @jpbunaz
  • 8. #IaaC Impacts Mon log peut être long Différent type de log Perturbe mon application La valve doit être non bloquante @jpbunaz
  • 10. #IaaC Acteur : Vue d’avion TASK 2 TASK 1 TASK 4 TASK 4 Tâches indépendantes qui communiquent entre elles de manière asynchrone via des messages TASK 3 TASK 5 @jpbunaz
  • 11. #IaaC Création d’un Message case class MonMessage(param1: String, param2: String, param3: String, param4: String) @jpbunaz
  • 12. #IaaC Création d’un Acteur class MonActeur() extends Actor { def receive = { case MonMessage(param1: String, param2: String, param3: String, param4: String) => // Code de logging case } } @jpbunaz
  • 13. #IaaC Envoi du message à l’acteur // Initialisation de l’acteur val monActeur = actorSystem.actorOf(Props[MyActeur]) // Initialisation du message val monMessage = MonMessage("value1", "value2", "value3", "value4") // Envoi aynchrone du message à l’acteur monActeur ! monMessage // Code exécution avant traitement du message ExecuterLaSuiteDansLaFoulée() @jpbunaz
  • 14. #IaaC Acteur : Points de vigilance N’expose pas son état interne class UglyActeur() extends Actor { var variableCanAccess = null def receive = { case String => // My acteur code… } } @jpbunaz
  • 15. #IaaC Acteur : Points de vigilance Les messages doivent être immuables case class UglyMessage( var param1: String, var param2: String) @jpbunaz
  • 16. #IaaC Acteur : Points de vigilance TASK Working… @jpbunaz • L’acteur ne traite qu’un seul message à la fois • Les messages sont mis en attente dans une boite aux lettres
  • 17. #IaaC Maitriser le nombre d’acteurs Nombre d’Acteur !!! Un message à la fois !!! Utiliser un router @jpbunaz
  • 18. #IaaC Routeur • Maîtriser le nombre d’Acteur • Différents types de routage (RoundRobin, Random …) • Configuration externalisée dans un fichier de propriétés @jpbunaz
  • 19. #IaaC Créer un routeur val monRouteur = actorSystem.actorOf( FromConfig.props(routeProps = Props[MonActeur]) , name = "monRouteur" ) @jpbunaz
  • 20. #IaaC Configurer un routeur Akka.actor.deployment { /monRouteur { router = round-robin-pool nr-of-instances = 5 } } @jpbunaz
  • 21. #IaaC Conclusion sur les Acteurs • Simple à mettre en oeuvre • Contrôle sur les ressources en adéquation avec la charge • Gestion multithread transparente, pas de lock, de synchronized • Naturellement asynchrone @jpbunaz
  • 23. #IaaC Pourquoi Kafka ? Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader @hayssams
  • 24. #IaaC Avant les messages groups U2E3 U1E3 U2E2 U1E2 U2E1 •  Solution traditionnelle : Un seul consommateur pour toute la file U1E1 U2E3 U1E3 U2E2 U1E2 U2E1 U1E1 @hayssams
  • 25. #IaaC Avec Kafka : partitionnement par clef U2E3 U2E2 U2E1 U1E3 U1E2 U1E1 U2E3 U2E2 U2E1 U1E3 U1E2 U1E1 Cluster Kafka P1R1 P2R1 P1R2 P2R2 Pro Cons Cons Avec JMSGroupID •  Un local manager (SPOF) plusieurs remote •  Requiert un serveur de backup @hayssams Avec Kafka •  Support natif du partitionnement •  Réplication des messages •  Tolérance au pannes
  • 26. #IaaC Pourquoi Spark Streaming Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader @hayssams
  • 27. #IaaC •  Récupération du Tuple(request, response, session, url) • val tuples = kafka.initStream(context, "requests », 2 seconds)" •  Validation des règles • rdd = tuples.filter( t => RulesHandler.match(t))" •  Transformation du tuple en document JSON • rdd2 = rdd.map( t => toDocument)" •  Injection dans ES • rdd2.foreachRDD(doc => es.insert doc)" •  Identification des relations • rdd3 = rdd.flatMap(_.toRelations)! • rdd3.foreachRDD(rel => neo4j.insert rel)" => Statistiques d’accès en temps réel Traitement continu des accès utilisateurs @hayssams
  • 28. #IaaC Avec Spark: API unique pour la batch et le streaming Flux continu provevant de réseau 2s 2s 2s 2s 2s 2s 2s t t +16 •  Découpage du flux en un paquet de données (RDD) toutes les 2 secondes •  Un RDD est une collection de données RDD RDD RDD RDD RDD RDD RDD •  Chaque paquet est traité comme un comme un RDD soumis au batch Spark classique Out Out Out Out D Out D Out Out •  Spark exécute les opérations sur le RDD comme dans un batch classique et renvoie le résultat en retour. Spark •  Exécution de microbatchs @hayssams
  • 29. #IaaC Avec Spark: Tolérance aux pannes au coût minimum val tuples = kafka.initStream(context,"requests », 2 seconds" ! rdd = tuples.filter( t => RulesHandler.match(t))" " rdd2 = rdd.map( t => toDocument)" " rdd2.foreachRDD(doc => es.insert doc) // via Kafka" ! rdd3 = rdd.flatMap(_.toRelations)! ! rdd3.foreachRDD(rel => neo4j.insert rel) // via Kafka KafkaInputDStream FilteredDStream MappedDStream ForEachDStream MappedDStream ForEachDStream •  Le code ci-dessus ne génère aucun calcul, juste un graphe d’objets •  Le Scheduler Spark va soumettre le graphe d’objets aux workers pour exécution •  J En cas de panne, il suffit juste de soumettre à nouveau le graphe d’objets à un autre worker. •  Pas besoin de réplication des résultats ou d’upstream backup @hayssams
  • 30. #IaaC Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader Pourquoi Spark Classic @hayssams
  • 31. #IaaC Notification des clients rdd= Sc.readFromXMLFile(…)" rdd.persist! val updatedRDD = rdd.filter(product => product.existsInMapWithDifferentHash)" val newRDD = rdd.filter(product => !product.existInMap)" " val updateNotifications = updatedRDD.map(_.executeStrategies)" " val newNotifications = newRDD.map(_.executeStrategies)" " updateNotifications.union(newNotifications).foreachRDD(_.notifyClient)" " RDD Action @hayssams
  • 32. #IaaC Avec Spark : Une riche librairie d’opérations d1 d2 d3 d1 d2 d3 d1 d2 d3 d2 d3 d1 d2 d3 d1 d2 d3 d1 d2 d3 map filter union groupByKey reduceByKey reduce collect count take first foreach … •  Avec en plus •  J Contrôle sur le partitionnement •  J broadcast •  J accumulateurs •  J Les chaînage d’actions ne requiert pas d’écriture intermédiaire sur disque @hayssams
  • 33. #IaaC Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader Pourquoi Apache Zookeeper @hayssams
  • 34. #IaaC Pourquoi Zookeeper • Election de leader pour la tolérance au pannes Maitre Esclave Esclave Esclave Maitre de secours Esclave et maitre de secours Esclave et maitre de secours Esclave et maitre de secours Esclave et maitre de secours Election de leader Avec Zookeeper Tout noeud est un master potentiel @hayssams
  • 35. #IaaC Pourquoi Zookeeper • Centralisation de la configuration / services … master nodes es node1 node2 node1 Zookeeper Server 1 Server 2 Leader Service Service 1.Enregistrementdesservices Client 2. Récupération de la localisation des workers 4. sollicitation du service 3. Sélection du worker @hayssams
  • 36. #IaaC Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Zookeeper Server 1 Server 2 Leader Pourquoi Mesos Marathon @hayssams
  • 37. #IaaC Avant Mesos Démultiplication nombre de VMs •  €€€ Cluster Tomcat : Frontend facing app •  € Cluster Kafka : Middleware de messages •  €€ Cluster Spark •  €€€ Cluster ElasticSearch •  TTT : Compléxité de configuration •  Apache Mesos et Marathon à la rescousse •  Voir l’ensemble des VMs comme une seule machine sur laquelle tournent plusieurs JVMs @hayssams
  • 38. #IaaC Avant Mesos Démultiplication nombre de VMs Dev. Int. PréProd. Prod. •  Requiert d’exécuter un OS en entier pour obtenir une isolation des ressources et de la sécurité •  Temps de démarrage assez long (5 à 10 minutes par VM) •  Plus d’OS => encore plus de systèmes à administrer •  Coût de licence des VMs •  Allocation statique => Sous utilisation de la CPU VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM VM @hayssams
  • 39. #IaaC Avec Linux cgroups OS Hôte OS Guest OS Guest OS Guest App1 App2 App3 OS Hôte App1 App2 App3 •  Isolation •  CPU •  Mémoire •  I/O •  Réseau VM Linux cgroups @hayssams
  • 40. #IaaC Avec Mesos Serveur Serveur Serveur Serveur 80 CPU, 640Go App App App App App App App App App •  J Partage des ressources •  J Tolérant aux pannes •  Pour les applications longue durée (MOM / AS) •  Si vous n’avez jamais cherché à savoir sur quel cœur s’exécute votre tâche alors vous n’avez probablement pas besoin de savoir non plus sur quel serveur. •  IaaC : Infrastructure as a (Single) Computer •  Faire fonctionner les différents environnements (dev / Int/ Preprod / Prod) sur la même infrastructure •  Y compris les jobs Jenkins @hayssams
  • 41. #IaaC Architecture Mesos Mesos Master Mesos Worker Mesos Worker MonAppScheduler MonAppExecutor MonAppExecutor 2CPUs, 20Go Tâche •  Pour s’exécuter sur Mesos une application doit implémenter : •  Un scheduler •  Un Executor @hayssams
  • 42. #IaaC Mesos Tomcat Tomcat FrontfacingApp FrontfacingApp Akka Akka Akka Akka Stream Processing (Spark Streaming) RealtimeViews (ElasticSearch) All Data (Spark) Precompute Views BatchViews Query (Tomcat,Kibana,…) NewDataStream Kafka Speed Layer Batch Layer Serving Layer Product Updates Marathon Zookeeper Server 1 Server 2 Leader Marathon @hayssams
  • 43. #IaaC Pourquoi Marathon • Eviter d’avoir à développer un Executor et un Scheduler pour les applications « longue durée » • Marathon permet via une API REST de configurer des instances applicatives au dessus de Mesos en indiquant la commande à lancer @hayssams
  • 44. #IaaC Exemple de commande Marathon POST /v2/apps HTTP/1.1" " {" "id": "TomcatApp"," "cmd": "/path/bin/catalina.sh run $PORT"," "mem": 1024," "cpus": 2.0," "instances": 3," "constraints": [" " " ]" }" " •  Marathon utilisé pour lancer •  Kafka •  ElasticSearch •  Tomcat •  Scale up/down par simple appel REST avec une nouvelle configuration Régulation de charge et découverte GET /apps/MonApp/tasks Hot haproxy.cfg reload @hayssams ["hostname", "UNIQUE", ""],! ["hostname", ”like", ”front{1,2}"]
  • 46. #IaaC Conclusion • Neal Real time Analytics • Batch Analytics • Middleware de messages • Partage dynamique de ressources Spark Streaming Spark Classic Mesos Marathon Kafka Un seul framework IaaC Partionnement automatique @hayssams