Apache Flink®
Prise en main rapidehttp://www.meetup.com/fr/Paris-Apache-Flink-Meetup
Bilal BALTAGI@bilal_baltagi
29/10/2015
Plan
1. Installation & config (en local)
2. Exécution des exemples : CLI & Job Client Web interface
3. Développement avec un IDE : Batch Vs Streaming
4. Développement interactif : Scala shell Vs Zeppelin
2
Installation en local : Pré requis
1. Vérification de la présence de Java :
a. $ java -version #Linux, OS X ou Windows
Installer JAVA et configurer JAVA_HOME ou %PATH%: ==>https://www.java.com/fr/==>http://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/index.html 3
Installation en local : Téléchargement
1. Téléchargement d’Apache Flink http://flink.apache.org/
2. Décompression de l’archive $ tar xzf flink-*.tgz
3. Facultative : Déplacer et renommer le répertoire$ mv flink-0.9.1 ~/tools/flink
4
Installation en local : contenu
5
Installation en local : configuration
1. Fichier de configuration unique$ gedit ./conf/flink-conf.yaml
https://ci.apache.org/projects/flink/flink-docs-release-0.9/setup/config.html
2. Nombre de managers taskmanager.numberOfTaskSlots : *Nombre de CPU*
https://ci.apache.org/projects/flink/flink-docs-release-0.9/setup/config.html#configuring-taskmanager-processing-slots
6
Plan
1. Installation & config (en local)
2. Exécution des exemples : CLI & Job Client Web interface
3. Développement avec un IDE : Batch Vs Streaming
4. Développement interactif : Scala shell Vs Zeppelin
7
Exécution des exemples : Command-Line Interface
1. Exécution des programmes *.jar en ligne de commandes
a. Indifférence entre localhost/cluster
b. Passage des paramètres simplifié args[*]
c. Test de performance avec différents parallélisme -p 8
2. Démarrer l’interpréteur Flink
a. $ ./bin/start-local.sh #UNIX or Windows Cygwin
b. $ \bin\start-local.bat #Windows3. Tableau de bord localhost:8081
8
Exécution des exemples : Command-Line Interface
(Démo)
$ ./bin/flink run ./examples/flink-java-examples-0.9.1-WordCount.jar #UNIX
$ .\bin\flink.bat run .\examples\flink-java-examples-0.9.1-WordCount.jar #Windows
9
Exécution des exemples : Command-Line Interface
(Démo)
$ ./bin/flink run -p 8 ./examples/flink-java-examples-0.9.1-WordCount.jar file:///home/bilal/tools/flink/LICENSE file:////home/bilal/tools/flink/output/WordCountOut.csv
==>https://ci.apache.org/projects/flink/flink-docs-release-0.9/apis/cli.html
run / info / cancel / list
10
Exécution des exemples : Job Client Web interface
1. Permet l'exécution des programmes *.jar sur une interface web
a. Visualisation du plan d'exécution
b. Visualisation des performances
c. Passage des paramètres args[*]
d. Visualisation de l’utilisation des ressources11
Exécution des exemples : Job Client Web interface
1. Démarrer l’interpréteur
a. $ ./bin/start-local.sh
b. $ ./bin/start-webclient.sh #Par defaut port 8080
c. localhost:8080
12
Exécution des exemples : Job Client Web interface
13
Exécution des exemples : Job Client Web interface
(Démo)
Envoi du programme : flink-java-examples-0.9.1-WordCount.jar Visualisation du plan d'exécutionExécution et visualisation des performances-p 1 file:////home/bilal/tools/resources/bigfile.txt file:////home/bilal/tools/flink/output/bigfileCountP1.txt-p 8 file:////home/bilal/tools/resources/bigfile.txt file:////home/bilal/tools/flink/output/bigfileCountP8.txt
14
Exécution des exemples : Job Client Web interface
15
Plan
1. Installation & config (en local)
2. Exécution des exemples : CLI & Job Client Web interface
3. Développement avec un IDE : Batch Vs Streaming
4. Développement interactif : Scala shell Vs Zeppelin
16
Développement avec un IDE : Recommandations
1. Disposer d’une version récente de Maven
2. Deux IDE : Eclipse et IntelliJ IDEA
i. Java
ii. Scala
==>https://ci.apache.org/projects/flink/flink-docs-release-0.9/apis/programming_guide.html 17
Développement avec un IDE : ExempleJAVA
$ mkdir workspace$ cd workspace$ mkdir javaflink$ cd javaflink$ mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=0.9.1
SCALA$ mkdir workspace$ cd workspace$ mkdir scalaflink$ cd scalaflink$ mvn archetype:generate -
DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-scala -DarchetypeVersion=0.9.1
⇒ Importation du projet dans l’IDE
18
Développement avec un IDE : ExempleSCALA
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala</artifactId> <version>0.9.1</version></dependency><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>0.9.1</version></dependency>
JAVA<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>0.9.1</version></dependency><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>0.9.1</version></dependency>
19
Développement avec un IDE : Exemple
WordCount : Batch SocketTextStreamWordCount : Stream
1. Ouvrir un terminal pour écrire sur le port 9999a. $ nc -lk 9999 # Écrire quelques
2. Exécuter SocketTextStreamWordCount avec les argumentsa. localhost 9999 #Adresse et port d’écoute
20
Plan
1. Installation & config (en local)
2. Exécution des exemples : CLI & Job Client Web interface
3. Développement avec un IDE : Batch Vs Streaming
4. Développement interactif : Scala shell Vs Zeppelin
21
Développement interactif :
1. Avantages
a. Exécution interactive du code
b. Exploration rapide des données
c. API Scala complète
22
Développement interactif : Scala shell
23
1. $ ./bin/start-scala-shell.sh
Développement interactif : Scala shell
24
(Démo)
Scala-Flink> val input = env.fromElements(1,2,3,4)Scala-Flink> val doubleInput = input.map(_*2)Scala-Flink> doubleInput.print()
Développement interactif : Scala shell
25
Défaut:
1. Pas de visualisation
2. Pas de sauvegarde
3. Pas de replay code
Développement interactif : Zeppelin
26
1. Interface-web
2. Ajout des graphes
3. Destiné aux data-scientists
4. Reporting schedulé
==>https://zeppelin.incubator.apache.org==>https://zeppelin.incubator.apache.org/docs/interpreter/flink.html
Développement interactif : Zeppelin
27
(Démo)
$ cd zeppelin$ ./bin/zeppelin-daemon.sh start http://localhost:8080 #Ports par défaut 8080 et 8081
Développement interactif : Zeppelin
28
(Démo : Double)%flinkval input = env.fromElements(1,2,3,4)val doubleInput = input.map(_*2).collect
%flinkprintln("%table count\n")doubleInput.foreach(s=> println(s))
Développement interactif : Zeppelin
29
(Démo : WordCount)%flinkval text = env.fromElements("To be, or not to be",”bla bla bla”)val counts = text.flatMap { _.toLowerCase.split("\\W+")}.map { (_,1)}.groupBy(0).sum(1)val wordcount = counts.collect
%flinkprintln("%table word\tcount\n")wordcount.foreach(s=> println(s._1 +"\t" + s._2))
MERCI
30
Top Related