Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015

36
Apache Flink Vue d’ensemble du framework Paris Spark Meetup 07/12/2015 Bilal BALTAGI @Bilal_baltagi

Transcript of Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015

Apache FlinkVue d’ensemble du framework

Paris Spark Meetup07/12/2015

Bilal BALTAGI@Bilal_baltagi

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

Écosystème classique d’un Big data analytics framework

5

6

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

Actuellement le seul framework Open-source hybride : Batch and True Real Time

9

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 - plan d’execution

11

Apache Flink : Traitement Batch - plan d’execution

12

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

4X Plus rapide que Spark

17

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

Storm Vs. Flink

Source : http://goo.gl/1Tgbn3

21

260X Plus de données que Storm

22

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 : Gelly● Gelly : Traitement des graphes

29

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

Apache Flink : FlinkML et Gelly● Algorithmes avec itérations :

○ K-means○ PageRank

31

Apache Flink : Overview

Real-time Stream

Cyclic Batch

Machine Learning

Graph

32

Apache Flink : overview - qui utilise Flink ?

33

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