Démarrer rapidement avec Apache Flink par Bilal Baltagi
- Présentation de l'éco Système Apache Flink
- Prise en main rapide
Bilal Baltagi a obtenu un master en analyse des données à l'Université Paris Nord - Paris 13. Il est actuellement consultant décisionnel chez Sarenza à Paris. Il intervient sur toutes les phases d'un projet décisionnel et Big data: recueil des besoins, conceptions, réalisations et accompagnement des utilisateurs. Bilal est de plus en plus intéressé à l'intersection de la Big Data avec la Business Intelligence et aime jouer avec Apache Flink!
2. Plan
● Introduction à Apache Flink
● L'écosystème Apache Flink
● Que fournit Apache Flink
○ Batch
○ Streaming
○ FlinkML et Gelly
● Apache Flink overview
2
3. Introduction à Apache Flink
● Open-source Big Data Analytics Framework
● Conçu dès le départ pour :
○ In-memory process
○ Traitement en streaming
○ Nativement itérative
○ Mémoire autogérée
○ Optimisation basée sur le coût
3
4. Introduction à Apache Flink
● Origine :
○ Stratosphere : Projet universitaire
○ Né à Berlin en 2008
● Quelques dates :
○ Avril 2014 : Apache Projet Incubation
○ Décembre 2014 : Apache Projet Top level
○ Novembre 2015 : Dernière release 0.10.1
4
7. Que fournis Apache Flink
● Moteur d'exécution : Distribué et évolutif
● Plusieurs API :
○ DataSet - Batch (Java, Scala et Python)
○ DataStream - temps réel (Java et Scala)
○ Table - Batch et temps réel (≈Relational SQL)
7
10. Apache Flink : Traitement Batch
● Cost-based optimisation du plan d'exécution
○ En fonction du contexte (Single machine,
cluster…)
○ En fonction de la volumétrie des données
sources
10
18. Apache Flink : Traitement temps réel
● N’est plus en bêta depuis le 23/11/2015
● Low-latency : temps réel
● High throughput : Volumétrie élevée
● Fault-tolerance Exactly-once : Pas de traitement
dupliqué
18
19. Apache Flink : Traitement temps réel
● Traitement native des itérations
● API riche :
○ Connecteurs (Flume, kafka, Twitter…)
○ Opérations identiques au batch
19
20. Apache Flink : Traitement temps réel
● Quelques cas ou le “vrai temps réel” est critique :
○ Détection des fraudes et anomalies
○ Gestion des trafics
○ Recommandation en ligne
Source : http://spark.apache.org/faq.html 20
21. Apache Flink : Traitement temps réel
Storm Vs. Flink
Source : http://goo.gl/1Tgbn3 21
23. Apache Flink : Traitement temps réel
● Exemple de traitement d’un flux continu avec Apache Flink : http://flink.
apache.org/news/2015/12/04/Introducing-windows.html
Capteur : Nombre de véhicules
23
24. Apache Flink : Traitement temps réel
Rolling sum : Retourne en continue la somme du nombre de
véhicules passés 24
25. Apache Flink : Traitement temps réel
Tumbling windows: Retourne toutes les 60 secondes le
nombre de véhicules qui viennent de passer 25
26. Apache Flink : Traitement temps réel
Windows sliding : Retourne toutes les 30 secondes le nombre
de véhicules qui sont passés au cours des 60 dernières
secondes 26
27. Apache Flink : Traitement temps réel
case class Word (word: String, frequency: Int)
val lines: DataStream[String] = env.fromSocketStream(...)
lines.flatMap {line => line.split(" ")
.map(word => Word(word,1))}
.window(Time.of(5,SECONDS)).every(Time.of(1,SECONDS))
.groupBy("word").sum("frequency")
.print()
27
28. Apache Flink : FlinkML
● FlinkML : Machine learning
● Inspiré de
○ Sikit-learn : Spécification propre des
pipelines ML
○ Spark’s MLLIB : Alogrithmes scalables
28
34. Flink 1.0 - Projet en cours...
● FlinkML streaming
● Sortir Table SQL de la bêta
● D’autres connecteurs
34
35. Flink : Pour aller plus loin
Site officiel : https://flink.apache.org/
Training : http://dataartisans.github.io/flink-training/
Gartner : http://goo.gl/mlgMoI
KDnuggets : http://goo.gl/Z9hRvn
Apache Flink vue par un développeur Spark : http://goo.
gl/pygDyV
35