SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Apache Kafka 
Un système distribué 
de messagerie 
hautement performant 
Charly CLAIRMONT 
CTO 
ALTIC 
http://altic.org 
charly.clairmont@altic.org 
@egwada
Petite bio 
Co-fondateur Altic 
10 ans maintenant 
Un des mes premiers jobs : « mettre de 
l'open source à tous les étages » dans 
l'entreprise ! 
Mes technos (orientées décisionnelles mais pas que)
Altic 
@Altic_Buzz 
Métier 
Informatique Décisionnelle 
Intégration de données 
Valeurs 
– Innovations 
– Open Source 
Une maîtrise de toute la chaîne de valeur du Big Data
Apache Kafka 
Un système distribué de messagerie 
hautement performant 
tolérant aux panes
Agenda 
Introduction 
Apache Kafka, qu'est ce que c'est ? 
Concepts élémentaires 
Topics, partitions, replicas, offsets 
Producteurs, brokers, consommateurs 
Écosystème
Agenda 
Introduction 
Apache Kafka, qu'est ce que c'est ?
Introduction 
Apache Kafka, qu'est-ce que c'est ? 
● Distribué, très haut débit, système de messagerie 
publication / abonnement (pub-sub) 
– Rapide, Robuste, Scalable, Durable 
● Principaux cas d'utilisation 
– Agrégation de logs, traitement temps réel, monitoring, 
files d'attente 
● Développé à l'origine chez LinkedIn 
● Écrit en Scala (un peu de Java) 
● TLP Apache depuis 2012 
● 9 core commiteurs, en eviron 20 contributeurs 
● http://kafka.apache.org
Introduction 
Comparaison avec d'autres 
brokers 
8 
Kafka 
Messagerie file d'attente 
Débit faible, faible latence 
JMS 
ActiveMQ 
RabbitMQ 
Qpid 
Agrégateur de logs 
Débit très fort, forte latence 
Flume Hedwig 
Scribe 
Kestrel 
Batch jobs 
Traditionnels: JMS, xxxMQ/AMQP 
Nouvelle génération: Kestrel, Scribe, Flume, Kafka
Introduction 
Performance chez LinkedIn 
● Statistiques sur l'un des importants clusters 
Apache Kafka (aux heures de pointe): 
– 15 brokers 
– 15 500 partitions (réplication facteur 2) 
– En entrée 
● 400 000 msg / sec. 
● 70 Mo / sec. 
– En sortie 
● 400 Mo / sec.
Introduction 
Adoption de Kafka & Cas 
d'utilisation 
● LinkedIn 
– flux d'activité, suivi indicateurs opérationnels, bus de données 
– 400 nodes, 18k topics, 220 milliards msg/day (pic 3.2 millions 
msg/s), Mai 2014 
● OVH : Anti-DDOS 
● Netflix : Suivi temps réel, traitement temps réel 
● Twitter : Composant de leur architecture temps réel, couplée à Storm 
● Spotify : Traitement de log (de 4h à 10s), Hadoop 
● Loggly : Collecte et traitement de log 
● Mozilla : Gestion de métrique 
● Airbnb, Cisco, Gnip, InfoChimps, Ooyala, Square, Uber, …
Introduction 
Pourquoi Apache Kafka ? 
On va imaginer que vous collectez vos logs!
Introduction 
Pourquoi Apache Kafka ? 
Jusqu'ici tout va bien !
Introduction 
Pourquoi Apache Kafka ? 
Là ça va encore !
Introduction 
Pourquoi Apache Kafka ? 
Mais là ? Diriez-vous la même chose ?
Introduction 
Pourquoi Apache Kafka ? 
Je n'en suis pas si sûr !
Introduction 
Pourquoi Apache Kafka ? 
Un bel exemple celui de Spotify. 
https://www.jfokus.se/jfokus14/preso/Reliable­real­time­processing­with­Kafka­and­Storm. 
pdf (Feb 2014)
Introduction 
Pourquoi Apache Kafka est-il si rapide ? 
● Écritures rapides: 
– Bien que Kafka persiste toutes les données sur le disque, 
toutes les écritures vont essentiellement « page cache » de 
l'OS, soit la RAM. 
● Lectures rapides: 
– Très efficace pour transférer des données à partir du 
« page cache » vers une socket réseau 
– Linux: sendfile() appel système 
● « Zéro-copy » 
● Combinaison des deux = rapide Kafka! 
● Compression de bout en bout
Agenda 
Introduction 
c'est quoi Apache Kafka 
Concepts élémentaires 
Topics, partitions, offsets, réplicas 
producteur, brokers ,consommateurs, 
Ecosystème
Concepts élémentaires 
Vue Globale 
● Les producteurs publient des données 
vers les brockers. 
● Les consommateurs s'abonnent et 
récupèrent les données depuis les 
brockers. 
● Tous les services sont distribués 
● Les données 
– Les données sont stockées dans des 
topics. 
– Les topics sont divisés en partitions, 
et sont répliqués.
Concepts élémentaires 
Vue Globale 
« broker » = serveur 
Partitions : 
distribuées 
et 
répliquées 
sur les 
brokers 
(donc les 
serveurs) 
topic = « zerg.hydra »
Topic: correspond au nom du flux sur lequel les messages vont 
être publiés 
• Par exemple : “zerg.hydra” 
Kafka élague depuis la “tête” en se basant sur 
l'âge ou la taille maximale or la « clé » 
Kafka topic 
Broker(s) 
Concepts élémentaires 
Topics 
Nouv. 
Producteur A1 
Producteur A2 
… 
Producteur An 
Les producteurs ajoutent toujours à la fin du de la file 
(penser à l'ajout dans un fichier) 
… 
anciens messages Nouveaux messages
Les consommateurs emploient un « pointeur de lecture » 
( “offset pointer”) pour tracer et contrôler là où il en est 
(et décide Consommateur groupe C2 du rythme de consommation) 
Kafka topic 
Broker(s) 
Concepts élémentaires 
Topics 
Nouv. 
Producteur A1 
Producteur A2 
… 
Producteur An 
… 
Consommateur groupe C1 
anciens messages Nouveaux messages
Concepts élémentaires 
Message 
Protocole léger 
Traitement des messages par lot (Producteur & Consommateur) 
Compression de bout en bout 
taille 
Version 
Message 
Checksum 
Payload
Concepts élémentaires 
Partitions 
Les partitions 
– Ordonnées 
– Séquence immuable 
– Le nombre de 
partitions 
détermine le 
nombre maximum de 
(groupes de) 
consommateurs
Concepts élémentaires 
partition offsets 
● A chaque message est 
attribué un « id » 
unique et trié 
appelé « offset ». 
Les consommateurs 
déplacent leur 
pointeur via la 
combinaison (offset, 
partition, topic) 
Consommateur groupe 1
Concepts élémentaires 
réplicas 
● Uniformément distribués 
● « sauvegarde » des partitions 
● Existent uniquement pour éviter les pertes de 
données 
● Si numReplicas == 3 alors 2 brokers peuvent tomber 
logs 
ttooppiicc11--ppaarrtt11 
broker 1 
logs 
ttooppiicc11--ppaarrtt22 
ttooppiicc22--ppaarrtt22 
broker 2 
logs 
ttooppiicc22--ppaarrtt11 
ttooppiicc11--ppaarrtt11 
broker 3 
logs 
ttooppiicc11--ppaarrtt22 
broker 4 
ttooppiicc22--ppaarrtt22 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt22 
ttooppiicc22--ppaarrtt11 
ttooppiicc22--ppaarrtt22 
ttooppiicc22--ppaarrtt11
Concepts élémentaires 
réplicas 
Flux de réplication 
broker 1 
Producteur 
leader 
follower 
broker 2 
follower 
broker 3 
4 
2 
2 
3 
commit 
Accusé de réception 
ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 
Consommateur 
1 
Type de « Récepton Accusé » par 
le Producteur ? 
Latence Durabilité en cas de faille 
Pas d'accusé de récepton Pas de retard réseau qlq données perdues 
Attente de l'électon du leader 1 aller-retour du réseau Peu de données perdues 
Attente de validaton (commit) 2 allers-retours du réseau Pas de perte de données 
Seules les donnés validées sont présentées au consommateur
Concepts élémentaires 
réplicas 
Flux de réplication 
follower 
follower 
ttooppiicc33--ppaarrtt11 
Producteur 
broker 1 broker 2 
follower 
follower 
follower 
ttooppiicc33--ppaarrtt11 
broker 3 
leader 
ttooppiicc11--ppaarrtt11 
ttooppiicc11--ppaarrtt11 
ttooppiicc11--ppaarrtt11 
follower 
ttooppiicc33--ppaarrtt11 
broker 4 
leader 
Producteur 
ttooppiicc22--ppaarrtt11 
Producteur 
leader 
ttooppiicc22--ppaarrtt11 
ttooppiicc22--ppaarrtt11 
http://kafka.apache.org/documentation.html#replication
Concepts élémentaires 
Producteurs 
Publier des messages dans Kafka 
– C'est assez simple 
– Vous pouvez aussi directement agréger vos traces 
Log4J 
– Liste complète des exemples 
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Produce 
r+Example
Concepts élémentaires 
Producteurs 
API 
– ProducerType (sync/async) 
– CompressionCodec (none/snappy/gzip) 
– BatchSize 
– EnqueueSize/Time 
– Encoder/Serializer 
– Partitioner 
– #Retries 
– MaxMessageSize 
– …
Concepts élémentaires 
Consommateurs 
Possibilité d'utiliser un consommateur pour publier dans Kafka 
Les consommateurs sont responsables de vérifier où ils en sont 
dans leur lecture 
Il y a une API simple, et une autre bien plus performante 
– High-level (consumer group, auto-commit) 
– Low-level (simple consumer, manual commit)
Concepts élémentaires 
Consommateurs 
API
Agenda 
Introduction 
Apache Kafka, qu'est-ce que c'est ? 
Concepts élémentaires 
Topics, partitions, replicas, offsets 
Producteurs, brokers, consommateurs 
Écosystème
Écosystème 
Intégration 
Consommateur 
• Java (in standard dist) 
• Scala (in standard dist) 
• Python: kafka-python 
• Python: samsa 
• Python: brod 
• Go: Sarama 
• Go: nuance 
• Go: kafka.go 
• C/C++: libkafka 
• Clojure: clj-kafka 
• Clojure: kafka-clj 
• Ruby: Poseidon 
• Ruby: kafka-rb 
• Ruby: Kafkaesque 
• Jruby::Kafka 
• PHP: kafka-php(1) 
• PHP: kafka-php(2) 
• Node.js: Prozess 
• Node.js: node-kafka 
• Node.js: franz-kafka 
• Erlang: erlkafka 
• Erlang: kafka-erlang 
Producteurs 
• Java (in standard dist) 
• Scala (in standard dist) 
• Log4j (in standard dist) 
• Logback: logback-kafka 
• Udp-kafka-bridge 
• Python: kafka-python 
• Python: pykafka 
• Python: samsa 
• Python: pykafkap 
• Python: brod 
• Go: Sarama 
• Go: kafka.go 
• C: librdkafka 
• C/C++: libkafka 
• Clojure: clj-kafka 
• Clojure: kafka-clj 
• Ruby: Poseidon 
• Ruby: kafka-rb 
• Ruby: em-kafka 
• PHP: kafka-php(1) 
• PHP: kafka-php(2) 
• PHP: log4php 
• Node.js: Prozess 
• Node.js: node-kafka 
• Node.js: franz-kafka 
• Erlang: erlkafka
Écosystème 
Intégration 
Intégratons connues 
Stream Processing 
Storm - A stream-processing framework. 
Samza - A YARN-based stream processing framework 
Spark 
Hadoop Integraton 
Camus - LinkedIn's Kafka=>HDFS pipeline. This one is 
used for all data at LinkedIn, and works great. 
Kafka Hadoop Loader A diferent take on Hadoop 
loading functionality from what is included in the main 
distribution. 
AWS Integraton 
Automated AWS deployment 
Kafka->S3 Mirroring 
Logging 
klogd - A python syslog publisher 
klogd2 - A java syslog publisher 
Tail2Kafka - A simple log tailing utility 
Fluentd plugin - Integration with Fluentd 
Flume Kafka Plugin - Integration with Flume 
Remote log viewer 
LogStash integration - Integration with LogStash and 
Fluentd 
Official logstash integration 
Metrics 
Mozilla Metrics Service - A Kafka and Protocol Bufers 
based metrics and logging system 
Ganglia Integration 
Packing and Deployment 
RPM packaging 
Debian 
packaginghtps://github.com/tomdz/kafka-deb-packagi 
ng 
Puppet integration 
Dropwizard packaging 
Misc. 
Kafka Mirror - An alternative to the built-in mirroring 
tool 
Ruby Demo App 
Apache Camel Integration 
Infobright integration
Écosystème 
Intégration 
Kafka + X pour le traitement des données 
– Storm, Spark, Samza 
– Akka Actors, Java multi-thread 
– Camus : de Kafka à Hadoop 
PPrroodduucceerr 
PPrroodduucceerr 
PPrroodduucceerr 
Kafka 
topic1 
Kafka 
topic2 
PPrroocceessss11 
PPrroocceessss11 
PPrroocceessss11 
PPrroocceessss22 
PPrroocceessss22 
PPrroocceessss22 
SSyysstteemm11 SSyysstteemm22
Écosystème 
Architecture Matérielle 
● Machines uniquement dédiées à Kafka, rien d'autre 
– 1 instance d'un broker Kafka par machine 
– 2 x 4-core Intel Xeon (ou plus) 
– 64 GB RAM (up from 24 GB) 
● Seuls 4 GB sont utilisés par le broker Kafka, les 60 GB 
restants pour page cache 
● Disques 
– RAID10 avec 14 spindles 
– Plus il y a de spindles, plus le débit du disque est 
important 
– 8x SATA drives (7200rpm) JBOD 
● Réseau 
– 1 GigE de préférence
A défaut d'un bon livre, une très bonne 
ressource pour débuter 
Apache Kafka 0.8 basic training 
http://www.slideshare.net/miguno/apache­kafka­08­basic­training­verisign
Questons
Merci ! 
Charly CLAIRMONT 
CTO 
ALTIC 
http://altic.org 
charly.clairmont@altic.org 
@egwada 
@ALtic_Buzz

Contenu connexe

Tendances

Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2Amal Abid
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureFlorian Hussonnois
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQLkamar MEDDAH
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6Amal Abid
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
Reporting avec JasperServer & iReport
Reporting avec JasperServer & iReportReporting avec JasperServer & iReport
Reporting avec JasperServer & iReportLilia Sfaxi
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4JLilia Sfaxi
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 

Tendances (20)

Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Reporting avec JasperServer & iReport
Reporting avec JasperServer & iReportReporting avec JasperServer & iReport
Reporting avec JasperServer & iReport
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 

En vedette

Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignMichael Noll
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaJeff Holoman
 
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
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark StreamingP. Taylor Goetz
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre MICHRAFY MUSTAFA
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !Bruno Bonnin
 
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...Cedric CARBONE
 
Cassandra spark connector
Cassandra spark connectorCassandra spark connector
Cassandra spark connectorDuyhai Doan
 
Apache Kafka
Apache KafkaApache Kafka
Apache KafkaJoe Stein
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Vincent Lepot
 
Relaxing With CouchDB
Relaxing With CouchDBRelaxing With CouchDB
Relaxing With CouchDBleinweber
 
Du Big Data vers le SMART Data : Scénario d'un processus
Du Big Data vers le SMART Data : Scénario d'un processusDu Big Data vers le SMART Data : Scénario d'un processus
Du Big Data vers le SMART Data : Scénario d'un processusCHAKER ALLAOUI
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 

En vedette (20)

Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - Verisign
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
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
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark Streaming
 
Apache SPARK ML : principes, concepts et mise en œuvre
Apache SPARK  ML : principes, concepts et  mise en œuvre Apache SPARK  ML : principes, concepts et  mise en œuvre
Apache SPARK ML : principes, concepts et mise en œuvre
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
 
Ben Broeckx
Ben BroeckxBen Broeckx
Ben Broeckx
 
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...
Paris Spark Meetup (Feb2015) ccarbone : SPARK Streaming vs Storm / MLLib / Ne...
 
Cassandra spark connector
Cassandra spark connectorCassandra spark connector
Cassandra spark connector
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Relaxing With CouchDB
Relaxing With CouchDBRelaxing With CouchDB
Relaxing With CouchDB
 
Du Big Data vers le SMART Data : Scénario d'un processus
Du Big Data vers le SMART Data : Scénario d'un processusDu Big Data vers le SMART Data : Scénario d'un processus
Du Big Data vers le SMART Data : Scénario d'un processus
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 

Similaire à Apache Kafka, Un système distribué de messagerie hautement performant

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
 
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
 
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
 
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQAMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQMicrosoft
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logsNoël
 
LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxNoël
 
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...Julien Anguenot
 
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
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureconfluent
 
05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpipNoël
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsNeil Armstrong
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08Loïc Descotte
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]ANEO
 
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELEC
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELECRetour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELEC
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELECMicrosoft Technet France
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 

Similaire à Apache Kafka, Un système distribué de messagerie hautement performant (20)

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
 
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
 
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.K
 
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQAMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logs
 
LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseaux
 
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
 
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
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
 
05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server Internals
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
 
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELEC
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELECRetour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELEC
Retour d'expérience BIG COMPUTE & HPC sur Windows Azure, par ANEO et SUPELEC
 
Openstack framework Iaas
Openstack framework IaasOpenstack framework Iaas
Openstack framework Iaas
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 

Plus de ALTIC Altic

Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkALTIC Altic
 
Spark Bi-Clustering - OW2 Big Data Initiative, altic
Spark Bi-Clustering - OW2 Big Data Initiative, alticSpark Bi-Clustering - OW2 Big Data Initiative, altic
Spark Bi-Clustering - OW2 Big Data Initiative, alticALTIC Altic
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackALTIC Altic
 
Business Intelligence, where is the innovation?
Business Intelligence, where is the innovation?Business Intelligence, where is the innovation?
Business Intelligence, where is the innovation?ALTIC Altic
 
Présentation de Palo
Présentation de PaloPrésentation de Palo
Présentation de PaloALTIC Altic
 
Présentation de Redmine
Présentation de RedminePrésentation de Redmine
Présentation de RedmineALTIC Altic
 
Présentation de iScrib
Présentation de iScribPrésentation de iScrib
Présentation de iScribALTIC Altic
 
2.3.open day8sep iscrib
2.3.open day8sep iscrib2.3.open day8sep iscrib
2.3.open day8sep iscribALTIC Altic
 
Wiki Book, industrialisation de vos réponses à appel d'offre
Wiki Book, industrialisation de vos réponses à appel d'offreWiki Book, industrialisation de vos réponses à appel d'offre
Wiki Book, industrialisation de vos réponses à appel d'offreALTIC Altic
 
Présentation d'Itaapy
Présentation d'ItaapyPrésentation d'Itaapy
Présentation d'ItaapyALTIC Altic
 
2011 - Introduction OpenDay Smart Tools
2011 - Introduction OpenDay Smart Tools2011 - Introduction OpenDay Smart Tools
2011 - Introduction OpenDay Smart ToolsALTIC Altic
 
Presentation_Big_Data_Altic.pdf
Presentation_Big_Data_Altic.pdfPresentation_Big_Data_Altic.pdf
Presentation_Big_Data_Altic.pdfALTIC Altic
 
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalités
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalitésPresentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalités
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalitésALTIC Altic
 
Open day Business Intelligence spécial Jaspersoft 4
Open day Business Intelligence spécial Jaspersoft 4Open day Business Intelligence spécial Jaspersoft 4
Open day Business Intelligence spécial Jaspersoft 4ALTIC Altic
 
Retour d'expérience Ville de Châteauroux
Retour d'expérience Ville de ChâteaurouxRetour d'expérience Ville de Châteauroux
Retour d'expérience Ville de ChâteaurouxALTIC Altic
 

Plus de ALTIC Altic (15)

Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache SparkPlateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
Plateforme bigdata orientée BI avec Hortoworks Data Platform et Apache Spark
 
Spark Bi-Clustering - OW2 Big Data Initiative, altic
Spark Bi-Clustering - OW2 Big Data Initiative, alticSpark Bi-Clustering - OW2 Big Data Initiative, altic
Spark Bi-Clustering - OW2 Big Data Initiative, altic
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStack
 
Business Intelligence, where is the innovation?
Business Intelligence, where is the innovation?Business Intelligence, where is the innovation?
Business Intelligence, where is the innovation?
 
Présentation de Palo
Présentation de PaloPrésentation de Palo
Présentation de Palo
 
Présentation de Redmine
Présentation de RedminePrésentation de Redmine
Présentation de Redmine
 
Présentation de iScrib
Présentation de iScribPrésentation de iScrib
Présentation de iScrib
 
2.3.open day8sep iscrib
2.3.open day8sep iscrib2.3.open day8sep iscrib
2.3.open day8sep iscrib
 
Wiki Book, industrialisation de vos réponses à appel d'offre
Wiki Book, industrialisation de vos réponses à appel d'offreWiki Book, industrialisation de vos réponses à appel d'offre
Wiki Book, industrialisation de vos réponses à appel d'offre
 
Présentation d'Itaapy
Présentation d'ItaapyPrésentation d'Itaapy
Présentation d'Itaapy
 
2011 - Introduction OpenDay Smart Tools
2011 - Introduction OpenDay Smart Tools2011 - Introduction OpenDay Smart Tools
2011 - Introduction OpenDay Smart Tools
 
Presentation_Big_Data_Altic.pdf
Presentation_Big_Data_Altic.pdfPresentation_Big_Data_Altic.pdf
Presentation_Big_Data_Altic.pdf
 
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalités
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalitésPresentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalités
Presentation Jaspersoft 4.0 par l'éditeur - Bénéfices et fonctionnalités
 
Open day Business Intelligence spécial Jaspersoft 4
Open day Business Intelligence spécial Jaspersoft 4Open day Business Intelligence spécial Jaspersoft 4
Open day Business Intelligence spécial Jaspersoft 4
 
Retour d'expérience Ville de Châteauroux
Retour d'expérience Ville de ChâteaurouxRetour d'expérience Ville de Châteauroux
Retour d'expérience Ville de Châteauroux
 

Apache Kafka, Un système distribué de messagerie hautement performant

  • 1. Apache Kafka Un système distribué de messagerie hautement performant Charly CLAIRMONT CTO ALTIC http://altic.org charly.clairmont@altic.org @egwada
  • 2. Petite bio Co-fondateur Altic 10 ans maintenant Un des mes premiers jobs : « mettre de l'open source à tous les étages » dans l'entreprise ! Mes technos (orientées décisionnelles mais pas que)
  • 3. Altic @Altic_Buzz Métier Informatique Décisionnelle Intégration de données Valeurs – Innovations – Open Source Une maîtrise de toute la chaîne de valeur du Big Data
  • 4. Apache Kafka Un système distribué de messagerie hautement performant tolérant aux panes
  • 5. Agenda Introduction Apache Kafka, qu'est ce que c'est ? Concepts élémentaires Topics, partitions, replicas, offsets Producteurs, brokers, consommateurs Écosystème
  • 6. Agenda Introduction Apache Kafka, qu'est ce que c'est ?
  • 7. Introduction Apache Kafka, qu'est-ce que c'est ? ● Distribué, très haut débit, système de messagerie publication / abonnement (pub-sub) – Rapide, Robuste, Scalable, Durable ● Principaux cas d'utilisation – Agrégation de logs, traitement temps réel, monitoring, files d'attente ● Développé à l'origine chez LinkedIn ● Écrit en Scala (un peu de Java) ● TLP Apache depuis 2012 ● 9 core commiteurs, en eviron 20 contributeurs ● http://kafka.apache.org
  • 8. Introduction Comparaison avec d'autres brokers 8 Kafka Messagerie file d'attente Débit faible, faible latence JMS ActiveMQ RabbitMQ Qpid Agrégateur de logs Débit très fort, forte latence Flume Hedwig Scribe Kestrel Batch jobs Traditionnels: JMS, xxxMQ/AMQP Nouvelle génération: Kestrel, Scribe, Flume, Kafka
  • 9. Introduction Performance chez LinkedIn ● Statistiques sur l'un des importants clusters Apache Kafka (aux heures de pointe): – 15 brokers – 15 500 partitions (réplication facteur 2) – En entrée ● 400 000 msg / sec. ● 70 Mo / sec. – En sortie ● 400 Mo / sec.
  • 10. Introduction Adoption de Kafka & Cas d'utilisation ● LinkedIn – flux d'activité, suivi indicateurs opérationnels, bus de données – 400 nodes, 18k topics, 220 milliards msg/day (pic 3.2 millions msg/s), Mai 2014 ● OVH : Anti-DDOS ● Netflix : Suivi temps réel, traitement temps réel ● Twitter : Composant de leur architecture temps réel, couplée à Storm ● Spotify : Traitement de log (de 4h à 10s), Hadoop ● Loggly : Collecte et traitement de log ● Mozilla : Gestion de métrique ● Airbnb, Cisco, Gnip, InfoChimps, Ooyala, Square, Uber, …
  • 11. Introduction Pourquoi Apache Kafka ? On va imaginer que vous collectez vos logs!
  • 12. Introduction Pourquoi Apache Kafka ? Jusqu'ici tout va bien !
  • 13. Introduction Pourquoi Apache Kafka ? Là ça va encore !
  • 14. Introduction Pourquoi Apache Kafka ? Mais là ? Diriez-vous la même chose ?
  • 15. Introduction Pourquoi Apache Kafka ? Je n'en suis pas si sûr !
  • 16. Introduction Pourquoi Apache Kafka ? Un bel exemple celui de Spotify. https://www.jfokus.se/jfokus14/preso/Reliable­real­time­processing­with­Kafka­and­Storm. pdf (Feb 2014)
  • 17. Introduction Pourquoi Apache Kafka est-il si rapide ? ● Écritures rapides: – Bien que Kafka persiste toutes les données sur le disque, toutes les écritures vont essentiellement « page cache » de l'OS, soit la RAM. ● Lectures rapides: – Très efficace pour transférer des données à partir du « page cache » vers une socket réseau – Linux: sendfile() appel système ● « Zéro-copy » ● Combinaison des deux = rapide Kafka! ● Compression de bout en bout
  • 18. Agenda Introduction c'est quoi Apache Kafka Concepts élémentaires Topics, partitions, offsets, réplicas producteur, brokers ,consommateurs, Ecosystème
  • 19. Concepts élémentaires Vue Globale ● Les producteurs publient des données vers les brockers. ● Les consommateurs s'abonnent et récupèrent les données depuis les brockers. ● Tous les services sont distribués ● Les données – Les données sont stockées dans des topics. – Les topics sont divisés en partitions, et sont répliqués.
  • 20. Concepts élémentaires Vue Globale « broker » = serveur Partitions : distribuées et répliquées sur les brokers (donc les serveurs) topic = « zerg.hydra »
  • 21. Topic: correspond au nom du flux sur lequel les messages vont être publiés • Par exemple : “zerg.hydra” Kafka élague depuis la “tête” en se basant sur l'âge ou la taille maximale or la « clé » Kafka topic Broker(s) Concepts élémentaires Topics Nouv. Producteur A1 Producteur A2 … Producteur An Les producteurs ajoutent toujours à la fin du de la file (penser à l'ajout dans un fichier) … anciens messages Nouveaux messages
  • 22. Les consommateurs emploient un « pointeur de lecture » ( “offset pointer”) pour tracer et contrôler là où il en est (et décide Consommateur groupe C2 du rythme de consommation) Kafka topic Broker(s) Concepts élémentaires Topics Nouv. Producteur A1 Producteur A2 … Producteur An … Consommateur groupe C1 anciens messages Nouveaux messages
  • 23. Concepts élémentaires Message Protocole léger Traitement des messages par lot (Producteur & Consommateur) Compression de bout en bout taille Version Message Checksum Payload
  • 24. Concepts élémentaires Partitions Les partitions – Ordonnées – Séquence immuable – Le nombre de partitions détermine le nombre maximum de (groupes de) consommateurs
  • 25. Concepts élémentaires partition offsets ● A chaque message est attribué un « id » unique et trié appelé « offset ». Les consommateurs déplacent leur pointeur via la combinaison (offset, partition, topic) Consommateur groupe 1
  • 26. Concepts élémentaires réplicas ● Uniformément distribués ● « sauvegarde » des partitions ● Existent uniquement pour éviter les pertes de données ● Si numReplicas == 3 alors 2 brokers peuvent tomber logs ttooppiicc11--ppaarrtt11 broker 1 logs ttooppiicc11--ppaarrtt22 ttooppiicc22--ppaarrtt22 broker 2 logs ttooppiicc22--ppaarrtt11 ttooppiicc11--ppaarrtt11 broker 3 logs ttooppiicc11--ppaarrtt22 broker 4 ttooppiicc22--ppaarrtt22 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt22 ttooppiicc22--ppaarrtt11 ttooppiicc22--ppaarrtt22 ttooppiicc22--ppaarrtt11
  • 27. Concepts élémentaires réplicas Flux de réplication broker 1 Producteur leader follower broker 2 follower broker 3 4 2 2 3 commit Accusé de réception ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 Consommateur 1 Type de « Récepton Accusé » par le Producteur ? Latence Durabilité en cas de faille Pas d'accusé de récepton Pas de retard réseau qlq données perdues Attente de l'électon du leader 1 aller-retour du réseau Peu de données perdues Attente de validaton (commit) 2 allers-retours du réseau Pas de perte de données Seules les donnés validées sont présentées au consommateur
  • 28. Concepts élémentaires réplicas Flux de réplication follower follower ttooppiicc33--ppaarrtt11 Producteur broker 1 broker 2 follower follower follower ttooppiicc33--ppaarrtt11 broker 3 leader ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 follower ttooppiicc33--ppaarrtt11 broker 4 leader Producteur ttooppiicc22--ppaarrtt11 Producteur leader ttooppiicc22--ppaarrtt11 ttooppiicc22--ppaarrtt11 http://kafka.apache.org/documentation.html#replication
  • 29. Concepts élémentaires Producteurs Publier des messages dans Kafka – C'est assez simple – Vous pouvez aussi directement agréger vos traces Log4J – Liste complète des exemples https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Produce r+Example
  • 30. Concepts élémentaires Producteurs API – ProducerType (sync/async) – CompressionCodec (none/snappy/gzip) – BatchSize – EnqueueSize/Time – Encoder/Serializer – Partitioner – #Retries – MaxMessageSize – …
  • 31. Concepts élémentaires Consommateurs Possibilité d'utiliser un consommateur pour publier dans Kafka Les consommateurs sont responsables de vérifier où ils en sont dans leur lecture Il y a une API simple, et une autre bien plus performante – High-level (consumer group, auto-commit) – Low-level (simple consumer, manual commit)
  • 33. Agenda Introduction Apache Kafka, qu'est-ce que c'est ? Concepts élémentaires Topics, partitions, replicas, offsets Producteurs, brokers, consommateurs Écosystème
  • 34. Écosystème Intégration Consommateur • Java (in standard dist) • Scala (in standard dist) • Python: kafka-python • Python: samsa • Python: brod • Go: Sarama • Go: nuance • Go: kafka.go • C/C++: libkafka • Clojure: clj-kafka • Clojure: kafka-clj • Ruby: Poseidon • Ruby: kafka-rb • Ruby: Kafkaesque • Jruby::Kafka • PHP: kafka-php(1) • PHP: kafka-php(2) • Node.js: Prozess • Node.js: node-kafka • Node.js: franz-kafka • Erlang: erlkafka • Erlang: kafka-erlang Producteurs • Java (in standard dist) • Scala (in standard dist) • Log4j (in standard dist) • Logback: logback-kafka • Udp-kafka-bridge • Python: kafka-python • Python: pykafka • Python: samsa • Python: pykafkap • Python: brod • Go: Sarama • Go: kafka.go • C: librdkafka • C/C++: libkafka • Clojure: clj-kafka • Clojure: kafka-clj • Ruby: Poseidon • Ruby: kafka-rb • Ruby: em-kafka • PHP: kafka-php(1) • PHP: kafka-php(2) • PHP: log4php • Node.js: Prozess • Node.js: node-kafka • Node.js: franz-kafka • Erlang: erlkafka
  • 35. Écosystème Intégration Intégratons connues Stream Processing Storm - A stream-processing framework. Samza - A YARN-based stream processing framework Spark Hadoop Integraton Camus - LinkedIn's Kafka=>HDFS pipeline. This one is used for all data at LinkedIn, and works great. Kafka Hadoop Loader A diferent take on Hadoop loading functionality from what is included in the main distribution. AWS Integraton Automated AWS deployment Kafka->S3 Mirroring Logging klogd - A python syslog publisher klogd2 - A java syslog publisher Tail2Kafka - A simple log tailing utility Fluentd plugin - Integration with Fluentd Flume Kafka Plugin - Integration with Flume Remote log viewer LogStash integration - Integration with LogStash and Fluentd Official logstash integration Metrics Mozilla Metrics Service - A Kafka and Protocol Bufers based metrics and logging system Ganglia Integration Packing and Deployment RPM packaging Debian packaginghtps://github.com/tomdz/kafka-deb-packagi ng Puppet integration Dropwizard packaging Misc. Kafka Mirror - An alternative to the built-in mirroring tool Ruby Demo App Apache Camel Integration Infobright integration
  • 36. Écosystème Intégration Kafka + X pour le traitement des données – Storm, Spark, Samza – Akka Actors, Java multi-thread – Camus : de Kafka à Hadoop PPrroodduucceerr PPrroodduucceerr PPrroodduucceerr Kafka topic1 Kafka topic2 PPrroocceessss11 PPrroocceessss11 PPrroocceessss11 PPrroocceessss22 PPrroocceessss22 PPrroocceessss22 SSyysstteemm11 SSyysstteemm22
  • 37. Écosystème Architecture Matérielle ● Machines uniquement dédiées à Kafka, rien d'autre – 1 instance d'un broker Kafka par machine – 2 x 4-core Intel Xeon (ou plus) – 64 GB RAM (up from 24 GB) ● Seuls 4 GB sont utilisés par le broker Kafka, les 60 GB restants pour page cache ● Disques – RAID10 avec 14 spindles – Plus il y a de spindles, plus le débit du disque est important – 8x SATA drives (7200rpm) JBOD ● Réseau – 1 GigE de préférence
  • 38. A défaut d'un bon livre, une très bonne ressource pour débuter Apache Kafka 0.8 basic training http://www.slideshare.net/miguno/apache­kafka­08­basic­training­verisign
  • 40. Merci ! Charly CLAIRMONT CTO ALTIC http://altic.org charly.clairmont@altic.org @egwada @ALtic_Buzz