apache flink par bilal baltagi paris spark meetup dec 2015
TRANSCRIPT
Plan● Introduction à Apache Flink● L'écosystème Apache Flink● Que fournit Apache Flink
○ Batch○ Streaming○ FlinkML et Gelly
● Apache Flink overview2
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
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
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
Que fournis Apache Flink● Domain-specific library (DSL) :
○ FlinkML : Machine Learning○ Gelly : Traitement des graphes
8
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
Apache Flink : Traitement Batch● Flink gère sa propre mémoire :
○ Pas de Out-of-memory○ Réduction du Garbage collector○ Stabilité
13
Apache Flink : Traitement Batchcase class Word (word: String, frequency: Int)
val lines: DataSet[String] = env.fromElements( "O Romeo, Romeo! wherefore art thou Romeo?”, …)
lines.flatMap {line => line.split(" ") .map(word => Word(word,1))} .groupBy("word").sum("frequency").print()
14
Apache Flink : Traitement Batch - comparaison
TeraSort de 3,2To - 80Go/node Source : http://goo.gl/IqR97G
15
Apache Flink : Traitement Batch - comparaison
HashJoin - 10 Noeud - 256Mo + 240GoSource : http://goo.gl/IqR97G
16
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
Apache Flink : Traitement temps réel● Traitement native des itérations● API riche :
○ Connecteurs (Flume, kafka, Twitter…)○ Opérations identiques au batch
19
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
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
Apache Flink : Traitement temps réel
Rolling sum : Retourne en continue la somme du nombre de véhicules passés 24
Apache Flink : Traitement temps réel
Tumbling windows: Retourne toutes les 60 secondes le nombre de véhicules qui viennent de passer 25
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
Apache Flink : Traitement temps réelcase 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
Apache Flink : FlinkML● FlinkML : Machine learning ● Inspiré de
○ Sikit-learn : Spécification propre des pipelines ML
○ Spark’s MLLIB : Alogrithmes scalables
28
Apache Flink : FlinkML et Gelly● Points forts :
○ In-memory data streaming○ Code identique entre machine locale (extrait
des données) et cluster (toutes les données)○ Traitement nativement itérative
■ Iteration■ Delta-iteration
30
Flink 1.0 - Projet en cours...● FlinkML streaming● Sortir Table SQL de la bêta● D’autres connecteurs
34
Flink : Pour aller plus loinSite 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
Gardons contact● https://www.linkedin.com/in/BilalBaltagi● [email protected]● @bilal_baltagi
http://www.meetup.com/fr/Paris-Apache-Flink-Meetup/
36