#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
Apache kafka big data track
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
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, …
16. Introduction
Pourquoi Apache Kafka ?
Un bel exemple celui de Spotify.
https://www.jfokus.se/jfokus14/preso/ReliablerealtimeprocessingwithKafkaandStorm.
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
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
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
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)
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/apachekafka08basictrainingverisign