3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
Partie 2 - Introduction Apache Spark
Apache Spark - Pr sentation
Apache Spark est une plateforme de traitement sur cluster g n rique. C'est un
moteur de traitement libre, assurant un traitement parall le et distribu sur des
donn es massives. Il fournit une API de d veloppement pour permettre un
traitement en streaming, l'apprentissage automatique ou la gestion de requ tes
SQL et demandant des acc s r p t s sur un grand volume de donn es.
1 [#fn:DataFlair]
Apache Spark permet de r aliser des traitements par lot (batch processing) ou
la vol e (stream processing) et est con u de fa on pouvoir int grer tous les
outils et technologies Big Data. Par exemple, non seulement Spark peut-il
acc der aux sources de donn es de Hadoop, il peut galement tourner sur un
cluster Hadoop. tant donn que Spark n'offre pas de solution de stockage (pas
encore en tout cas), il est logique qu'il puisse proter de la puissance de HDFS
(le syst me de chiers de Hadoop), tout en offrant lui des performances
in gal es pour le traitement en batch, ainsi que d'autres facilit s (non offertes
par Hadoop Map Reduce) telles que le traitement it ratif, interactif et la vol e.
Spark offre des APIs de haut niveau en Java, Scala, Python et R. Il utilise le
traitement en m moire (in-memory processing), en exploitant les ressources
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
1/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
combin es du cluster comme si c' tait une machine unique.
Apache Spark a t cr en 2009 au laboratoire UC Berkeley R&D Lab (appel
maintenant AMPLab), et est devenu open-source en 2010 avec une licence BSD.
En 2013, il a int gr Apache Software Foundation, pour devenir, en 2014, un
projet Apache de haut niveau.
Apache Spark - Composants
Apache Spark utilise une architecture en couches, comportant plusieurs
composants, dont l'objectif est de permettre de r aliser des traitements
performants tout en promettant un d veloppement et une int gration facilit es. Il
est n la base pour pallier les probl mes pos s par Hadoop Map Reduce, mais
est devenu une entit lui seul, offrant bien plus que le traitement par lot
classique.
1 [#fn:DataFlair]
Voici les composants de Spark:
1. Spark Core
Publicité
Spark Core est le point central de Spark, qui fournit une plateforme
d'ex cution pour toutes les applications Spark. De plus, il supporte un large
ventail d'applications.
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
2/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
2. Spark SQL
Spark SQL se situe au dessus de Spark, pour permettre aux utilisateurs
d'utiliser des requ tes SQL/HQL. Les donn es structur es et semi-
structur es peuvent ainsi tre trait es gr ce Spark SQL, avec une
performance am lior e.
3. Spark Streaming
Spark Streaming permet de cr er des applications d'analyse de donn es
interactives. Les ux de donn es sont transform s en micro-lots et trait s
par dessus Spark Core.
4. Spark MLlib
La biblioth que de machine learning MLlib fournit des algorithmes de haute
qualit pour l'apprentissage automatique. Ce sont des libraries riches, tr s
utiles pour les data scientists, autorisant de plus des traitements en
m moire am liorant de fa on drastique la performance de ces algorithmes
sur des donn es massives.
5. Spark GraphX
Spark Graphx est le moteur d'ex cution permettant un traitement scalable
utilisant les graphes, se basant sur Spark Core.
Architecture de Spark
Les applications Spark s'ex cutent comme un ensemble ind pendant de
processus sur un cluster, coordonn s par un objet SparkContext dans le
programme principal, appel driver program.
2 [#fn:Architecture]
Pour s'ex cuter sur un cluster, SparkContext peut se connecter plusieurs types
de gestionnaires de clusters (Cluster Managers):
Sur
le
gestionnaire
autonome
de
Spark
, qui est inclus
dans Spark, et qui pr sente le moyen le plus rapide et simple de mettre en
Publicité
place un cluster.
Sur Apache Mesos
, un gestionnaire de cluster g n ral qui peut aussi tourner sur
Hadoop Map Reduce.
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
3/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
Sur Hadoop YARN
, le gestionnaire de ressources de Hadoop 2.
Sur
Kubernetes
, un syst me open-source pour
l'automatisation du
d ploiement et la gestion des applications conteneuris es.
Ces gestionnaires permettent d'allouer
les ressources n cessaires pour
l'ex cution de plusieurs applications Spark. Une fois connect , Spark lance des
ex cuteurs sur les noeuds du cluster, qui sont des processus qui lancent des
traitements et stockent des donn es pour les applications. Il envoie ensuite le
code de l'application (dans un chier JAR ou Python) aux ex cuteurs. Spark
Context envoie nalement les t ches ex cuter aux ex cuteurs.
Il est noter que:
Chaque application a son lot d'ex cuteurs, qui restent actifs tout au long de
l'ex cution de l'application, et qui lancent des t ches sur plusieurs threads.
Ainsi, les applications sont isol es les unes des autres, du point de vue de
l'orchestration (chaque driver ex cute ses propres t ches), et des ex cuteurs
(les t ches des diff rentes applications tournent sur des JVM diff rentes).
Ceci implique galement que les applications (ou Jobs) Sparks ne peuvent
pas changer des donn es, sans les enregistrer sur un support de stockage
externe.
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
4/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
Spark est ind pendant du gestionnaire de cluster sous-jacent. Il sut de
congurer Spark pour utiliser ce gestionnaire, il peut g rer ses ressources en
m me temps que d'autres applications, m me non-Spark.
L'application principale (driver) doit tre l' coute des connexions entrantes
venant de ses ex cuteurs.
Publicité
Caract ristiques de Spark
Spark est connu pour avoir plusieurs caract ristiques qui en font l'une des
plateformes les plus utilis es dans le domaine des Big Data. Nous citons:
1 [#fn:DataFlair]
Performance de traitement: Il est possible de r aliser une vitesse de
traitement tr s lev e avec Spark sur des chiers volumineux qui peut tre
jusqu' 100x meilleur que Hadoop Map Reduce, par exemple, et ceci gr ce
des m canismes tel que la r duction du nombre de lectures critures sur le
disque,
la valorisation du traitement en m moire et
l'utilisation des
m moires cache et RAM pour les donn es interm diaires.
Dynamicit : Il est facile de d velopper des applications parall les, gr ce aux
op rateurs haut niveau fournis par Spark (allant jusqu' 80 op rateurs).
Tol rance aux Fautes: Apache Spark fournit un m canisme de tol rance aux
fautes gr ce aux RDD. Ces structures en m moire sont con ues pour
r cup rer les donn es en cas de panne.
Traitements la vol e: L'un des avantages de Spark par rapport Hadoop
Map Reduce, c'est qu'il permet de traiter les donn es la vol e, pas
uniquement en batch.
valuations Paresseuses (Lazy Evaluations): Toutes les transformations
faites sur Spark RDD sont paresseuses de nature, ce qui veut dire qu'elles ne
donnent pas de r sultat direct apr s leur ex cution, mais g n rent un nouvel
RDD partir de l'ancien. On n'ex cute effectivement les transformations
qu'au moment de lancer une action sur les donn es. Nous allons d tailler
cet aspect plus tard dans le cours.
Support de plusieurs langages: Plusieurs langages de programmation sont
support s par Spark, tel que Java, R, Scala et Python.
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
5/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
Une communaut active et en expansion: Des d veloppeurs de plus de 50
entreprises sont impliqu s dans le d veloppement et l'am lioration de
Spark. Ce projet a t initi en 2009 et est encore en expansion.
Support d'analyses sophistiqu es: Spark est fourni avec un ensemble
d'outils d di s pour le streaming, les requ tes interactives, le machine
learning, etc.
Int gration avec Hadoop: Spark peut s'ex cuter ind pendamment ou sur
Hadoop YARN, et proter ainsi de la puissance du syst me de chiers
Publicité
distribu Hadoop HDFS.
Limitations de Spark
Spark a plusieurs limitations, tel que :
1 [#fn:DataFlair]
Pas de support pour le traitement en temps r el: Spark permet le traitement
en temps-presque-r el, car il utilise le traitement en micro-lot plut t que le
traitement en streaming.
Probl mes avec les chiers de petite taille: Spark partitionne le traitement
sur plusieurs ex cuteurs, et est optimis principalement pour les grands
volumes de donn es. L'utiliser pour des chiers de petite taille va rajouter un
co t suppl mentaire, il est donc plus judicieux dans ce cas d'utiliser un
traitement s quentiel classique sur une seule machine.
Pas de syst me de gestion des chiers: Spark est principalement un
syst me de traitement, et ne fournit pas de solution pour le stockage des
donn es. Il doit donc se baser sur d'autres syst mes de stockage tel que
Hadoop HDFS ou Amazon S3.
Co teux: En tant que syst me de traitement en m moire, le co t d'ex cuter
Spark sur un cluster peut tre tr s lev en terme de consommation
m moire.
Nombre d'algorithmes limit : Malgr la disponibilit de la biblioth que
MLlib, elle reste limit e en termes de nombre d'algorithmes impl ment s.
Latence: La latence de Spark pour l'ex cution de Jobs la vol e est plus
lev e que d'autres solutions de traitement en streaming tel que Flink
.
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
6/7
3/20/2021
P2 - Introduction Apache Spark - Atelier Apache Spark
R f rences
1. Data Flair, Spark Tutorial: Learn Spark Programming, https://data-air.training/blogs/spark-tutorial/
, consult le 02/2020
2. Spark Documentation, Cluster Mode Overview, https://spark.apache.org/docs/latest/cluster-
overview.html , consult le 02/2020
https://liliasfaxi.github.io/Atelier-Spark/p2-spark/
7/7