M2bdia Bded Kafka
M2bdia Bded Kafka
Annabelle Gillet
IEM/LIB
1 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Plan du cours
1 Généralités
2 Fonctionnement
3 Stream processing
4 Ecosystème
5 Ressources
2 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnalités
3 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Un flux de données
Voir les données comme un flux d’information de mises à jour, qui
permet d’obtenir un état lorsqu’il est traité dans son ensemble.
+5
-2
10
-1
+8
5 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
6 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
7 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
Architecture
Zookeeper
Groupe de
consommateurs
Consommateur
Producteur
Topic
Consommateur
8 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
Messages
9 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
Fonctionnement interne
11 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
Topic compaction
12 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
Serveur et brokers
Fonctionnement interne
Fonctionnement interne
Fonctionnement interne
16 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Fonctionnement interne
17 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Producteurs
Les producteurs
18 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Producteurs
Producteurs console
19 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Producteurs
Producteurs Java
Code du producteur :
1 Properties props = new Properties () ;
2 props . put ( ProducerConfig . BOOTSTRAP_SERVERS_CONFIG , " localhost :9092 " ) ;
3 props . put ( ProducerConfig . ACKS_CONFIG , " all " ) ;
4 props . put ( ProducerConfig . KEY_SERIALIZER_CLASS_CONFIG ,
" org . apache . kafka . common . serialization . StringSerializer " ) ;
5 props . put ( ProducerConfig . VALUE_SERIALIZER_CLASS_CONFIG ,
" org . apache . kafka . common . serialization . StringSerializer " ) ;
6
7 Producer < String , String > producer = new KafkaProducer < >( props ) ;
8 for ( int i = 0; i < 100; i ++)
9 producer . send ( new ProducerRecord < String , String >( " topic1 " ,
Integer . toString ( i ) , Integer . toString ( i ) ) ) ;
10
11 producer . close () ;
20 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Producteurs
Configuration du partitionnement
1 import java . util . Map ;
2 import org . apache . kafka . clients . producer . Partitioner ;
3 import org . apache . kafka . common . Cluster ;
4
5 public class Cus tomP art iti one r implements Partitioner {
6
7 private static final int PARTITION_COUNT = 50;
8
9 @Override
10 public void configure ( Map < String , ? > configs ) {}
11
12 @Override
13 public int partition ( String topic , Object key , byte [] keyBytes ,
14 Object value , byte [] valueBytes , Cluster cluster ) {
15 Integer keyInt = Integer . parseInt ( key . toString () ) ;
16 return keyInt % PARTITION_COUNT ;
17 }
18
19 @Override
20 public void close () {}
21 }
21 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Consommateurs
Les consommateurs
22 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Consommateurs
Consommateurs console
23 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Consommateurs
Consommateurs Java
24 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Consommateurs
Plan du cours
1 Généralités
2 Fonctionnement
Fonctionnement interne
Producteurs
Consommateurs
3 Stream processing
Definition
Types de traitements
Concepts
4 Ecosystème
5 Ressources
26 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
Stream processing
27 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
Particularités
28 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
Architecture
29 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
Temps
Plusieurs notions de temps sont présentes avec le stream
processing :
Le temps de l’évènement : le moment auquel l’évènement a
été émis à la source
Le temps du traitement : le moment auquel l’évènement est
traité
Différence de temps
Dans certains cas, la différence entre le temps de l’évènement et de
traitement peut être importante.
Un délai peut être défini avant de considérer un évènement comme
retardataire.
Plusieurs stratégies peuvent alors être adoptées : ignorer
l’évènement, ou l’intégrer tardivement.
30 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
31 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Definition
32 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
33 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
34 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Types de traitements
Agrégation
36 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Exemple d’agrégation
37 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
38 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
39 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Timestamp extractor
40 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
41 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
42 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Session window
Les fenêtres sont de taille variable, et les messages sont regroupés si la différence
entre leur timestamp est inférieure à un seuil défini.
43 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
44 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
45 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Jointure
46 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Types de traitements
Exemple de jointure
47 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Plan du cours
1 Généralités
2 Fonctionnement
Fonctionnement interne
Producteurs
Consommateurs
3 Stream processing
Definition
Types de traitements
Concepts
4 Ecosystème
5 Ressources
48 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Garantie de traitement
49 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Complémentarité
Ces deux notions sont complémentaires. Les traitements batch ont
un débit et une latence élevés. Les systèmes de streaming doivent
minimiser la latence et maximiser le débit pour obtenir les
meilleures performances.
50 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Conservation du partitionnement
Si un traitement regroupe tous les messages sous une même clé,
on peut avoir une perte de performances.
51 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Monitoring
Détection de fraudes
Détections d’anomalies
52 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Concepts
Lambda Architecture
Avant que les systèmes de streaming ne proposent la garantie effectively-once,
ils étaient réputés peu fiables et produisant des résultats approximatifs. La
Lambda Architecture a beaucoup été utilisée dans ce contexte : sa couche
Speed réalise les traitements en continue en stream processing, et sa couche
Batch réalise les traitements périodiquement (ex. : 1 fois par jour) pour
remplacer les résultats de la couche Speed par des résultats exacts.
Batch layer Serving layer
Batch view
Traitements
Master Batch
dataset Batch view
Nouvelles
données Speed layer
Speed view
Traitements
incrémentaux
Speed view
Concepts
La Kappa Architecture
Batch view
Batch
Master processing
dataset Batch view
New data
Speed layer
Speed view
Incremental
processing
Speed view
Concepts
Enrichissement des
Collecte des données données Analytics
PostgreSQL
Machine de insertion
Analyses de données
collecte 1
STREAM
Anrango
SEARCH insertion
Consommateur
...
Kafka
Hadoop
insertion Timescale
STREAM insertion
Kafka Streams
Stream API SEARCH
tweets de la
...
machine 1
...
Search API
Machine de
collecte n tweets de la
STREAM machine n
Traitement des
mentions
STREAM Extraction des
opérateurs
Batch layer Serving
Traitement des layer / polystore
URL
SEARCH
Traitement des
retweets
55 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Kafka Connect
56 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
ksql
57 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
58 / 59
Généralités Fonctionnement Stream processing Ecosystème Ressources
Ressources
https://kafka.apache.org
Exemples de code Kafka et Kafka Streams :
https://github.com/gwenshap/kafka-examples et
https://kafka-tutorials.confluent.io/
Streaming Systems: the what, where, when and how of
larger-data processing, Tyler Akidau, Slava Chernyak et
Reuven Lax, O’Reilly
Kafka The Definitive Guide: real-time data and stream
processing at scale, Neha Narkhede, Gwen Shapira et Todd
Palino, O’Reilly
Certaines illustrations du cours sont issues du livre ”Kafka:
The Definitive Guide” et du site Kafka
59 / 59