SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
Institut National des Sciences Appliquées et de Technologie Tunisie
Big Data
2015-2016
TP3- SPARK
Dr. Lilia SFAXI
Objectifs du TP : Introduction à Apache Spark, exemples d’utilisation et performance
TP3 : Spark
Page 2
I. Apache Spark1
I.1 Spark vs MapReduce2
Apache Spark a été créé au départ pour pallier les limitations de Hadoop Map/Reduce. En effet, ce
dernier, qui s’avère être idéal pour implémenter des applications à base de traitements par lot
(batch processing), montre certaines limites quand il s’agit d’applications à faible latence et à
traitements itératifs, comme par exemple pour le machine learning ou pour les algorithmes à base
de graphes.
Spark permet de généraliser le modèle de traitement de Map-Reduce, tout en améliorant de
manière conséquente les performances et l’utilisabilité. Il permet aux développeurs d’écrire des
applications en composant facilement des opérateurs tels que des mappers, reducers, jointures,
group-bys et filtres. Cette composition facilite l’expression d’un ensemble large de traitements.
De plus, Spark garde la trace des données que chacun de ces opérateurs produit, et permet aux
applications de stocker ces données en mémoire, améliorant ainsi considérablement la performance
en permettant d’éviter les accès coûteux au disque.
Hadoop Map Reduce est efficace pour les traitements à passe unique (un seul passage sur les
données), mais pas pour des traitements à plusieurs passes. Pour ces traitements plus complexes,
il faut enchaîner une série de jobs Map-Reduce et les exécuter séquentiellement, chacun de ces
jobs présentant une latence élevée et aucun ne pouvant commencer avant que le précédent ne soit
totalement terminé. Avec Spark, il est possible de développer des pipelines de traitement de
données complexes, à plusieurs étapes en s’appuyant sur des graphes orientés acycliques (DAG :
Directed Acyclic Graph). Spark permet de partager les données en mémoire entre les graphes, de
façon à ce que plusieurs jobs puissent travailler sur le même jeu de données3
.
1 Spark: http://spark.apache.org/
2 Inspirée du blog de Cloudera:
http://blog.cloudera.com/blog/2013/11/putting-spark-to-use-fast-in-memory-2 Inspirée du blog de Cloudera:
http://blog.cloudera.com/blog/2013/11/putting-spark-to-use-fast-in-memory-
computing-for-your-big-data-applications/
3 Srini Penchikala: Traitements Big Data avec Apache Spark,
http://www.infoq.com/fr/articles/apache-spark-introduction
TP3 : Spark
Page 3
I.2 Architecture de Spark4
Les applications Spark s’exécutent comme un ensemble de processus indépendants sur un cluster,
coordonnés par un objet SparkContext du programme principal, appelé Driver Program.
Pour s’exécuter sur un cluster, le SparkContext se connecte à un Cluster Manager, qui peut être
soit un gestionnaire standalone de Spark, soit YARN ou Mesos, pour l’allocation de ressources aux
applictions. Une fois connecté, Spark lance des executors sur les nœuds du cluster, des processus
qui lancent des traitements et stockent les données pour les applications. Il envoie ensuite le code
de l’application (Jar ou ficher python) aux executors. SparkContext envoie ensuite les Tasks aux
executors pour qu’ils les lancent.
I.3 RDD : Resilient Distributed Datasets
Les RDD5
sont une représentation abstraite des données en mémoire, permettant aux
programmeurs de réaliser des traitements in-memory sur de larges clusters, avec une tolérance
aux fautes importante. Elle est assimilée à une table dans une base de données. Un RDD peut
porter tout type de données et est stocké par Spark sur différentes partitions. Les RDD permettent
de réarranger les calculs et d’optimiser les traitements.
4 Spark Documentation: http://spark.apache.org/docs/latest/cluster-
overview.html
5 RDD: https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf
(publication de recherche)
TP3 : Spark
Page 4
Un RDD est immuable et en lecture seule. Il ne peut être créé que suite à des opérations
déterministes sur des données dans un support de stockage stable, ou sur d’autres RDDs. Ces
opérations sont appelées transformations. On cite par exemple map, filter et join.
Les RDDS n’ont pas besoin d’être matérialisés à tout moment. Au lieu de cela, ils disposent de
suffisamment d’informations sur la manière dont ils ont été dérivés d’autres sources de données
(appelé lineage). Ainsi, un programme pourra reconstruire à tout moment un RDD en cas d’échec.
Une action sur un RDD est une opération qui permet d’évaluer et de retourner une nouvelle valeur.
Quand une action est appelée sur un RDD, toutes les requêtes de traitement des données sont
calculées et le résultat retourné. On cite par exemple reduce, collect ou countByKey.
I.4 Traitement dans Spark
Spark fournit également des traitements Map-Reduce, mais en exploitant efficacement la mémoire,
tout en utilisant le lineage en cas d’échec si nécessaire.
Les étapes de shuffle dans spark sont moins coûteuses, car faites en mémoire. Il supporte
également les évaluations paresseuses (lazy evaluation) des requêtes, ce qui veut dire que les
transformations ne s’exécutent sur le cluster que si une action est invoquée. Cela dit, Spark peut
utiliser le disque pour des opérations intermédiaires si la mémoire n’est pas suffisante. Il est ainsi
capable d’alterner les traitements sur mémoire et sur disque.
TP3 : Spark
Page 5
Activité 1 : Lire la présentation6
fournie par votre enseignante, décrivant le comportement de
Spark, et en particulier l’exemple simple de traitement de texte.
II. Exemple : Word Count
L’exemple7
que nous allons dérouler est une version modifiée du célèbre WordCount, l’exemple Map
Reduce Classique. Cet exemple permet de :
1. Lire un ensemble de documents textuels
2. Compter le nombre de fois chaque mot apparaît
3. Filtrer tous les mots qui apparaissent moins qu’un certain nombre de fois
4. Pour les mots restants, compter le nombre de fois chaque lettre apparaît
Si on utilisait MapReduce, on aurait besoin de deux jobs successifs, et les données seraient
persistées sur HDFS entre les deux. En contre partie, dans Spark, un seul job est nécessaire, avec
presque 90% moins de lignes de code.
Par défaut, Spark utilise Scala (http://www.scala-lang.org/ ), un langage qui combine les
paradigmes orienté-objet et fonctionnel. Il est compilé en bytecode Java.
Voici le code en Scala de l’exemple (fourni par votre enseignante) :
6 Apache Spark, Fernando Rodriguez Olivera:
http://fr.slideshare.net/frodriguezolivera/apache-spark-41601032
7 How-to: Run a Simple Apache Spark App in CDH 5, Cloudera:
https://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark-
app-in-cdh-5/
TP3 : Spark
Page 6
Pour compiler ce programme, Maven est utilisé. Pour pouvoir compiler un code Scala, ajouter les
dépendances nécessaires dans le fichier pom.xml.
Activité 2 : Placer votre code dans le répertoire de votre choix dans la machine virtuelle CDH5 du
TP précédent. Dans cette machine, Spark est installé par défaut, dans sa version 1.5.0. Pour
compiler et exécuter l’exemple simplesparkapp :
1. Dans un terminal, placez-vous sous le répertoire de base du projet
2. Taper : mvn package
3. Les dépendances nécessaires seront téléchargées, le code compilé et un fichier jar sera
généré sous le même répertoire, intitulé : sparkwordcount-0.0.1-SNAPSHOT.jar
4. Charger le fichier cible du traitement dans HDFS. Vous pourrez utiliser pour commencer le
fichier de test fourni sous le répertoire data du projet, puis, pour un exemple plus
complexe, le fichier forum_node du TP précédent, par exemple.
5. Pour exécuter le programme Spark (code en Scala), utiliser le script spark-submit :
spark-submit --class com.cloudera.sparkwordcount.SparkWordCount --
master local target/sparkwordcount-0.0.1-SNAPSHOT.jar <input file> 2
6. Pour utiliser YARN, remplacer --master local par --master yarn
TP3 : Spark
Page 7
Pour le fichier de données fourni dans l’exemple, le résultat devrait ressembler à ce qui suit :
(e,6), (f,1), (a,4), (t,2), (u,1), (r,2), (v,1), (b,1), (c,1), (h,1),
(o,2), (l,1), (n,4), (p,2), (i,1)
Activité 3 : Nous désirons comparer les performances de Map-Reduce et de Spark. Pour cela :
1. Modifier le code Scala pour afficher seulement l’occurrence de chaque mot dans le fichier
2. Implémenter le même comportement avec Map-Reduce
3. Tester les deux programmes sur :
a. Le fichier de données simple pour commencer, pour voir si les codes sont corrects
b. Le fichier forum_nodes
Quelle est votre interprétation ?
III. HomeWork
Implémenter dans votre réseau social une fonctionnalité nécessitant un traitement de type batch
(Map Reduce ou Spark). Votre challenge dans cette partie est de déclencher ce travail à partir de
l’interface de votre application, puis d’afficher le résultat sur l’interface.

Contenu connexe

Tendances

Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Lilia Sfaxi
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian Lilia Sfaxi
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
Quand utiliser MongoDB … Et quand vous en passer…
Quand utiliser MongoDB	… Et quand vous en passer…Quand utiliser MongoDB	… Et quand vous en passer…
Quand utiliser MongoDB … Et quand vous en passer…MongoDB
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4JLilia Sfaxi
 

Tendances (20)

Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Une introduction à Hive
Une introduction à HiveUne introduction à Hive
Une introduction à Hive
 
pfe book 2023 2024.pdf
pfe book 2023 2024.pdfpfe book 2023 2024.pdf
pfe book 2023 2024.pdf
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Quand utiliser MongoDB … Et quand vous en passer…
Quand utiliser MongoDB	… Et quand vous en passer…Quand utiliser MongoDB	… Et quand vous en passer…
Quand utiliser MongoDB … Et quand vous en passer…
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 

En vedette

Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJSLilia Sfaxi
 
Mobile developement
Mobile developementMobile developement
Mobile developementLilia Sfaxi
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business IntelligenceLilia Sfaxi
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au WebLilia Sfaxi
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design PatternsLilia Sfaxi
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScriptLilia Sfaxi
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataArrow Group
 

En vedette (14)

Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
Mobile developement
Mobile developementMobile developement
Mobile developement
 
These
TheseThese
These
 
Tp4 - PHP
Tp4 - PHPTp4 - PHP
Tp4 - PHP
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au Web
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Angular
AngularAngular
Angular
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
Thinking big
Thinking bigThinking big
Thinking big
 

Similaire à BigData_TP3 : Spark

Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxAnass Nabil
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.xDr Hajji Hicham
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptxmajdoulineaitabdelal
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptxboulonvert
 
Syllabus advanced big data with spark
Syllabus advanced big data with sparkSyllabus advanced big data with spark
Syllabus advanced big data with sparkDr Hajji Hicham
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Dr Hajji Hicham
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctionsMICHRAFY MUSTAFA
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in ParisTed Drake
 
Spark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunitySpark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunityJean-Georges Perrin
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 

Similaire à BigData_TP3 : Spark (20)

Spark
SparkSpark
Spark
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Spark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptxSpark - An In-Memory Distributed Computing Engine.pptx
Spark - An In-Memory Distributed Computing Engine.pptx
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Introduction Apche Spark
Introduction Apche SparkIntroduction Apche Spark
Introduction Apche Spark
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptx
 
Syllabus advanced big data with spark
Syllabus advanced big data with sparkSyllabus advanced big data with spark
Syllabus advanced big data with spark
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Spark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunitySpark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the Community
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfLilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfLilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-CassandraLilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-CorrectionLilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intentsLilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web servicesLilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de donnéesLilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 

BigData_TP3 : Spark

  • 1. Institut National des Sciences Appliquées et de Technologie Tunisie Big Data 2015-2016 TP3- SPARK Dr. Lilia SFAXI Objectifs du TP : Introduction à Apache Spark, exemples d’utilisation et performance
  • 2. TP3 : Spark Page 2 I. Apache Spark1 I.1 Spark vs MapReduce2 Apache Spark a été créé au départ pour pallier les limitations de Hadoop Map/Reduce. En effet, ce dernier, qui s’avère être idéal pour implémenter des applications à base de traitements par lot (batch processing), montre certaines limites quand il s’agit d’applications à faible latence et à traitements itératifs, comme par exemple pour le machine learning ou pour les algorithmes à base de graphes. Spark permet de généraliser le modèle de traitement de Map-Reduce, tout en améliorant de manière conséquente les performances et l’utilisabilité. Il permet aux développeurs d’écrire des applications en composant facilement des opérateurs tels que des mappers, reducers, jointures, group-bys et filtres. Cette composition facilite l’expression d’un ensemble large de traitements. De plus, Spark garde la trace des données que chacun de ces opérateurs produit, et permet aux applications de stocker ces données en mémoire, améliorant ainsi considérablement la performance en permettant d’éviter les accès coûteux au disque. Hadoop Map Reduce est efficace pour les traitements à passe unique (un seul passage sur les données), mais pas pour des traitements à plusieurs passes. Pour ces traitements plus complexes, il faut enchaîner une série de jobs Map-Reduce et les exécuter séquentiellement, chacun de ces jobs présentant une latence élevée et aucun ne pouvant commencer avant que le précédent ne soit totalement terminé. Avec Spark, il est possible de développer des pipelines de traitement de données complexes, à plusieurs étapes en s’appuyant sur des graphes orientés acycliques (DAG : Directed Acyclic Graph). Spark permet de partager les données en mémoire entre les graphes, de façon à ce que plusieurs jobs puissent travailler sur le même jeu de données3 . 1 Spark: http://spark.apache.org/ 2 Inspirée du blog de Cloudera: http://blog.cloudera.com/blog/2013/11/putting-spark-to-use-fast-in-memory-2 Inspirée du blog de Cloudera: http://blog.cloudera.com/blog/2013/11/putting-spark-to-use-fast-in-memory- computing-for-your-big-data-applications/ 3 Srini Penchikala: Traitements Big Data avec Apache Spark, http://www.infoq.com/fr/articles/apache-spark-introduction
  • 3. TP3 : Spark Page 3 I.2 Architecture de Spark4 Les applications Spark s’exécutent comme un ensemble de processus indépendants sur un cluster, coordonnés par un objet SparkContext du programme principal, appelé Driver Program. Pour s’exécuter sur un cluster, le SparkContext se connecte à un Cluster Manager, qui peut être soit un gestionnaire standalone de Spark, soit YARN ou Mesos, pour l’allocation de ressources aux applictions. Une fois connecté, Spark lance des executors sur les nœuds du cluster, des processus qui lancent des traitements et stockent les données pour les applications. Il envoie ensuite le code de l’application (Jar ou ficher python) aux executors. SparkContext envoie ensuite les Tasks aux executors pour qu’ils les lancent. I.3 RDD : Resilient Distributed Datasets Les RDD5 sont une représentation abstraite des données en mémoire, permettant aux programmeurs de réaliser des traitements in-memory sur de larges clusters, avec une tolérance aux fautes importante. Elle est assimilée à une table dans une base de données. Un RDD peut porter tout type de données et est stocké par Spark sur différentes partitions. Les RDD permettent de réarranger les calculs et d’optimiser les traitements. 4 Spark Documentation: http://spark.apache.org/docs/latest/cluster- overview.html 5 RDD: https://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf (publication de recherche)
  • 4. TP3 : Spark Page 4 Un RDD est immuable et en lecture seule. Il ne peut être créé que suite à des opérations déterministes sur des données dans un support de stockage stable, ou sur d’autres RDDs. Ces opérations sont appelées transformations. On cite par exemple map, filter et join. Les RDDS n’ont pas besoin d’être matérialisés à tout moment. Au lieu de cela, ils disposent de suffisamment d’informations sur la manière dont ils ont été dérivés d’autres sources de données (appelé lineage). Ainsi, un programme pourra reconstruire à tout moment un RDD en cas d’échec. Une action sur un RDD est une opération qui permet d’évaluer et de retourner une nouvelle valeur. Quand une action est appelée sur un RDD, toutes les requêtes de traitement des données sont calculées et le résultat retourné. On cite par exemple reduce, collect ou countByKey. I.4 Traitement dans Spark Spark fournit également des traitements Map-Reduce, mais en exploitant efficacement la mémoire, tout en utilisant le lineage en cas d’échec si nécessaire. Les étapes de shuffle dans spark sont moins coûteuses, car faites en mémoire. Il supporte également les évaluations paresseuses (lazy evaluation) des requêtes, ce qui veut dire que les transformations ne s’exécutent sur le cluster que si une action est invoquée. Cela dit, Spark peut utiliser le disque pour des opérations intermédiaires si la mémoire n’est pas suffisante. Il est ainsi capable d’alterner les traitements sur mémoire et sur disque.
  • 5. TP3 : Spark Page 5 Activité 1 : Lire la présentation6 fournie par votre enseignante, décrivant le comportement de Spark, et en particulier l’exemple simple de traitement de texte. II. Exemple : Word Count L’exemple7 que nous allons dérouler est une version modifiée du célèbre WordCount, l’exemple Map Reduce Classique. Cet exemple permet de : 1. Lire un ensemble de documents textuels 2. Compter le nombre de fois chaque mot apparaît 3. Filtrer tous les mots qui apparaissent moins qu’un certain nombre de fois 4. Pour les mots restants, compter le nombre de fois chaque lettre apparaît Si on utilisait MapReduce, on aurait besoin de deux jobs successifs, et les données seraient persistées sur HDFS entre les deux. En contre partie, dans Spark, un seul job est nécessaire, avec presque 90% moins de lignes de code. Par défaut, Spark utilise Scala (http://www.scala-lang.org/ ), un langage qui combine les paradigmes orienté-objet et fonctionnel. Il est compilé en bytecode Java. Voici le code en Scala de l’exemple (fourni par votre enseignante) : 6 Apache Spark, Fernando Rodriguez Olivera: http://fr.slideshare.net/frodriguezolivera/apache-spark-41601032 7 How-to: Run a Simple Apache Spark App in CDH 5, Cloudera: https://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark- app-in-cdh-5/
  • 6. TP3 : Spark Page 6 Pour compiler ce programme, Maven est utilisé. Pour pouvoir compiler un code Scala, ajouter les dépendances nécessaires dans le fichier pom.xml. Activité 2 : Placer votre code dans le répertoire de votre choix dans la machine virtuelle CDH5 du TP précédent. Dans cette machine, Spark est installé par défaut, dans sa version 1.5.0. Pour compiler et exécuter l’exemple simplesparkapp : 1. Dans un terminal, placez-vous sous le répertoire de base du projet 2. Taper : mvn package 3. Les dépendances nécessaires seront téléchargées, le code compilé et un fichier jar sera généré sous le même répertoire, intitulé : sparkwordcount-0.0.1-SNAPSHOT.jar 4. Charger le fichier cible du traitement dans HDFS. Vous pourrez utiliser pour commencer le fichier de test fourni sous le répertoire data du projet, puis, pour un exemple plus complexe, le fichier forum_node du TP précédent, par exemple. 5. Pour exécuter le programme Spark (code en Scala), utiliser le script spark-submit : spark-submit --class com.cloudera.sparkwordcount.SparkWordCount -- master local target/sparkwordcount-0.0.1-SNAPSHOT.jar <input file> 2 6. Pour utiliser YARN, remplacer --master local par --master yarn
  • 7. TP3 : Spark Page 7 Pour le fichier de données fourni dans l’exemple, le résultat devrait ressembler à ce qui suit : (e,6), (f,1), (a,4), (t,2), (u,1), (r,2), (v,1), (b,1), (c,1), (h,1), (o,2), (l,1), (n,4), (p,2), (i,1) Activité 3 : Nous désirons comparer les performances de Map-Reduce et de Spark. Pour cela : 1. Modifier le code Scala pour afficher seulement l’occurrence de chaque mot dans le fichier 2. Implémenter le même comportement avec Map-Reduce 3. Tester les deux programmes sur : a. Le fichier de données simple pour commencer, pour voir si les codes sont corrects b. Le fichier forum_nodes Quelle est votre interprétation ? III. HomeWork Implémenter dans votre réseau social une fonctionnalité nécessitant un traitement de type batch (Map Reduce ou Spark). Votre challenge dans cette partie est de déclencher ce travail à partir de l’interface de votre application, puis d’afficher le résultat sur l’interface.