SlideShare une entreprise Scribd logo
1  sur  30
Apache Flink®
Prise en main rapide
http://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
1. 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
8
Exécution des exemples : Command-Line Interface
(Démo)
$ ./bin/flink run ./examples/flink-java-examples-0.9.1-
WordCount.jar #UNIX
$ .binflink.bat run .examplesflink-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 ressources
11
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écution
Exé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 : Exemple
JAVA
$ 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 : Exemple
SCALA
<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 9999
a. $ nc -lk 9999 # Écrire quelques
2. Exécuter SocketTextStreamWordCount avec les arguments
a. 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)
%flink
val input = env.fromElements(1,2,3,4)
val doubleInput = input.map(_*2).collect
%flink
println("%table countn")
doubleInput.foreach(s=> println(s))
Développement interactif : Zeppelin
29
(Démo : WordCount)
%flink
val 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
%flink
println("%table wordtcountn")
wordcount.foreach(s=> println(s._1 +"t" + s._2))
MERCI
30

Contenu connexe

Tendances

Apache flink - retour d'expérience sur la conférence flink forward 2015
Apache flink - retour d'expérience sur la conférence flink forward 2015Apache flink - retour d'expérience sur la conférence flink forward 2015
Apache flink - retour d'expérience sur la conférence flink forward 2015Bilal Baltagi
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAKebiznext
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Benoît de CHATEAUVIEUX
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureFlorian Hussonnois
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
Oracle 12c in memory en action
Oracle 12c in memory en actionOracle 12c in memory en action
Oracle 12c in memory en actionLaurent Leturgez
 
Hi-Media Couchbase meetup Paris Nb #1
Hi-Media Couchbase meetup Paris Nb #1Hi-Media Couchbase meetup Paris Nb #1
Hi-Media Couchbase meetup Paris Nb #1Mickaël Le Baillif
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesEDB
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 

Tendances (20)

Apache flink - retour d'expérience sur la conférence flink forward 2015
Apache flink - retour d'expérience sur la conférence flink forward 2015Apache flink - retour d'expérience sur la conférence flink forward 2015
Apache flink - retour d'expérience sur la conférence flink forward 2015
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Apache Beam
Apache Beam Apache Beam
Apache Beam
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAK
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
Windows server2016 presentation
Windows server2016 presentation Windows server2016 presentation
Windows server2016 presentation
 
Oracle 12c in memory en action
Oracle 12c in memory en actionOracle 12c in memory en action
Oracle 12c in memory en action
 
Hi-Media Couchbase meetup Paris Nb #1
Hi-Media Couchbase meetup Paris Nb #1Hi-Media Couchbase meetup Paris Nb #1
Hi-Media Couchbase meetup Paris Nb #1
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos données
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 

Similaire à Apache flink - prise en main rapide

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...adri1s
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptxboulonvert
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxHamzaElgari
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 

Similaire à Apache flink - prise en main rapide (20)

Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptx
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptx
 
Apache Open SSL
Apache Open SSLApache Open SSL
Apache Open SSL
 
Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 

Apache flink - prise en main rapide

  • 1. Apache Flink® Prise en main rapide http://www.meetup.com/fr/Paris-Apache-Flink-Meetup Bilal BALTAGI @bilal_baltagi 29/10/2015
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. Installation en local : contenu 5
  • 6. 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 1. 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
  • 7. 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
  • 8. 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 8
  • 9. Exécution des exemples : Command-Line Interface (Démo) $ ./bin/flink run ./examples/flink-java-examples-0.9.1- WordCount.jar #UNIX $ .binflink.bat run .examplesflink-java-examples-0.9.1- WordCount.jar #Windows 9
  • 10. 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
  • 11. 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 ressources 11
  • 12. 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
  • 13. Exécution des exemples : Job Client Web interface 13
  • 14. 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écution Exé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
  • 15. Exécution des exemples : Job Client Web interface 15
  • 16. 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
  • 17. 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
  • 18. Développement avec un IDE : Exemple JAVA $ 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
  • 19. Développement avec un IDE : Exemple SCALA <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
  • 20. Développement avec un IDE : Exemple WordCount : Batch SocketTextStreamWordCount : Stream 1. Ouvrir un terminal pour écrire sur le port 9999 a. $ nc -lk 9999 # Écrire quelques 2. Exécuter SocketTextStreamWordCount avec les arguments a. localhost 9999 #Adresse et port d’écoute 20
  • 21. 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
  • 22. Développement interactif : 1. Avantages a. Exécution interactive du code b. Exploration rapide des données c. API Scala complète 22
  • 23. Développement interactif : Scala shell 23 1. $ ./bin/start-scala-shell.sh
  • 24. 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()
  • 25. Développement interactif : Scala shell 25 Défaut: 1. Pas de visualisation 2. Pas de sauvegarde 3. Pas de replay code
  • 26. 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
  • 27. Développement interactif : Zeppelin 27 (Démo) $ cd zeppelin $ ./bin/zeppelin-daemon.sh start http://localhost:8080 #Ports par défaut 8080 et 8081
  • 28. Développement interactif : Zeppelin 28 (Démo : Double) %flink val input = env.fromElements(1,2,3,4) val doubleInput = input.map(_*2).collect %flink println("%table countn") doubleInput.foreach(s=> println(s))
  • 29. Développement interactif : Zeppelin 29 (Démo : WordCount) %flink val 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 %flink println("%table wordtcountn") wordcount.foreach(s=> println(s._1 +"t" + s._2))