Traitements Big Data avec Apache
Spark
1
Quest-ce que Spark ?
" Apache Spark est un framework de traitements Big Data open source
construit pour effectuer des analyses sophistiqu es et con u pour la
rapidit et la facilit dutilisation. Il est pass open source sous forme de
projet Apache en 2010.
2
Quest-ce que Spark ?
" Spark pr sente plusieurs avantages:
Dabord, Spark propose un framework complet et unifi pour r pondre aux besoins
de traitements Big Data pour divers jeux de donn es, divers par leur nature (texte,
graphe, etc.) aussi bien que par le type de source (batch ou flux temps-r el).
Ensuite, Spark permet des applications sur clusters Hadoop d tre ex cut es jusqu
100 fois plus vite en m moire, 10 fois plus vite sur disque. Il permet d crire
rapidement des applications en Java, Scala ou Python et inclut un jeu de plus de 80
op rateurs haut-niveau.
De plus, il est possible de lutiliser de fa on interactive pour requ ter les donn es
depuis un shell.
3
Quest-ce que Spark ?
" De plus, il est possible de lutiliser de fa on interactive pour requ ter les
donn es depuis un shell.
"
Enfin, en plus des op rations de Map et Reduce, Spark supporte les
requ tes SQL et le streaming de donn es et propose des fonctionnalit s
de machine learning et de traitements orient s graphe. Les d veloppeurs
peuvent utiliser ces possibilit s en stand-alone ou en les combinant en
une cha ne de traitement complexe
4
Hadoop et Spark
" Hadoop est positionn en tant que technologie de traitement de donn es depuis
10 ans et a prouv tre la solution de choix pour le traitement de gros volumes
de donn es.
"
MapReduce est une tr s bonne solution pour les traitements passe unique
mais nest pas la plus efficace pour les cas dutilisation n cessitant des
traitements et algorithmes plusieurs passes.
" Chaque tape dun workflow de traitement tant constitu e dune phase de Map
et dune phase de Reduce, il est n cessaire dexprimer tous les cas dutilisation
sous forme de patterns MapReduce pour tirer profit de cette solution.
"
Les donn es en sortie de lex cution de chaque tape doivent tre stock es sur
syst me de fichier distribu avant que l tape suivante commence. Cette
approche a tendance tre peu rapide cause de la r plication et du stockage
sur disque.
5
Hadoop et Spark
" De plus, les solutions Hadoop sappuient g n ralement sur des clusters, qui sont
difficiles mettre en place et administrer. Elles n cessitent aussi lint gration
de plusieurs outils pour les diff rents cas dutilisation big data (comme Mahout
pour le Machine Learning et Storm pour le traitement par flux).
"
Si vous souhaitez mettre en place quelque chose de plus complexe, vous devrez
encha ner une s rie de jobs MapReduce 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 nait tout- -fait termin .
Spark permet de d velopper des pipelines de traitement de donn es complexes,
plusieurs tapes, en sappuyant sur des graphes orient s acycliques (DAG).
6
Hadoop et Spark
" 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 es. Spark sex cute sur des infrastructures Hadoop Distributed
File System (HDFS) et propose des fonctionnalit s suppl mentaires.
Il est possible de d ployer des applications Spark sur un cluster Hadoop
v1 existant (avec SIMR Spark-Inside-MapReduce), sur un cluster
Hadoop v2 YARN.
"
Publicité
" Plut t que de voir en Spark un rempla ant dHadoop, il est plus correct
de le voir comme une alternative au MapReduce dHadoop.
Conclusion:
" Spark na pas t pr vu pour remplacer Hadoop mais pour mettre
disposition une solution compl te et unifi e permettant de prendre en
le cadre des
charge diff rents cas dutilisation et besoins dans
traitements big data.
7
Les fonctionnalit s de Spark
" Spark apporte des am liorations MapReduce gr ce des tapes de
shuffle moins co teuses. Avec le stockage en m moire et un traitement
proche du temps-r el, la performance peut tre plusieurs fois plus
rapide que dautres technologies big data.
" Spark
supporte galement
les valuations paresseuses
("lazy
evaluation") des requ tes, ce qui aide loptimisation des tapes de
traitement.
"
Il propose une API de haut-niveau pour une meilleure productivit et un
mod le darchitecture coh rent pour les solutions big data.
8
Les fonctionnalit s de Spark
" Spark maintient les r sultats interm diaires en m moire plut t que sur
disque, ce qui est tr s utile en particulier lorsquil est n cessaire de
travailler plusieurs reprises sur le m me jeu de donn es. Le moteur
dex cution est con u pour travailler aussi bien en m moire que sur
disque. Les op rateurs r alisent des op rations externes lorsque la donn e
ne tient pas en m moire, ce qui permet de traiter des jeux de donn es
plus volumineux que la m moire agr g e dun cluster.
" Spark essaye de stocker le plus possible en m moire avant de basculer sur
disque. Il est capable de travailler avec une partie des donn es en
m moire, une autre sur disque.
9
Les fonctionnalit s de Spark
Les autres fonctionnalit s propos es par Spark comprennent :
" Des fonctions autres que Map et Reduce
"
"
Loptimisation de graphes dop rateurs arbitraires
L valuation paresseuse des requ tes, ce qui aide optimiser le workflow
global de traitement
" Des APIs concises et coh rentes en Scala, Java et Python
" Un shell interactif pour Scala et Python (non disponible encore en Java)
Spark est crit en Scala et sex cute sur la machine virtuelle Java (JVM). Les
langages support s actuellement pour le d veloppement dapplications
sont : Scala; Java; Python
10
L cosyst me de Spark
c t des API principales de Spark, l cosyst me contient des librairies
additionnelles qui permettent de travailler dans le domaine des analyses big
data et du machine learning. Parmi ces librairies, on trouve :
" Spark Streaming : Spark Streaming peut tre utilis pour traitement temps-
r el des donn es en flux. Il sappuie sur un mode de traitement en "micro
batch" et utilise pour les donn es temps-r el DStream, cest- -dire une
s rie de RDD (Resilient Distributed Dataset).
" Spark SQL : Spark SQL permet dexposer les jeux de donn es Spark via API
JDBC et dex cuter des requ tes de type SQL en utilisant les outils BI et de
visualisation traditionnels. Spark SQL permet dextraire, transformer et
charger des donn es sous diff rents formats (JSON, Parquet, base de
donn es) et les exposer pour des requ tes ad-hoc.
11
L cosyst me de Spark
" Spark MLlib : MLlib est une librarie de machine learning qui contient tous
les algorithmes et utilitaires dapprentissage classiques, comme la
classification, la r gression, le clustering, le filtrage collaboratif, la r duction
de dimensions, en plus des primitives doptimisation sous-jacentes.
" Spark GraphX : GraphX est la nouvelle API pour les traitements de graphes
Publicité
et de parall lisation de graphes. GraphX tend les RDD de Spark en
introduisant le Resilient Distributed Dataset Graph, un multi-graphe orient
avec des propri t s attach es aux nSuds et aux arr tes.
12
Larchitecture de Spark
Larchitecture de Spark comprend les composants principaux suivants :
"
Le stockage des donn es
Spark utilise le syst me de fichiers HDFS pour le stockage des
donn es. Il peut fonctionner avec nimporte quelle source de
donn es compatible avec Hadoop, dont HDFS, HBase, Cassandra,&
"
Le Framework de gestion des ressources
Spark peut tre d ploy comme un serveur autonome ou sur un
framework de traitements distribu s comme YARN.
"
Les RDD: Resilient Distributed Datasets
13
Les "Resilient Distributed Datasets"
"
Les Resilient Distributed Datasets, ou RDD, sont un concept au cSur du
framework Spark.
" Un RDD est comme une table dans une base de donn es. Celui-ci 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 doptimiser le
traitement. Ils sont aussi tol rants aux pannes car un RDD sait comment
recr er et recalculer son ensemble de donn es.
"
Les RDD sont immutables: Pour obtenir une modification dun RDD, il faut
y appliquer une transformation, qui retournera un nouveau RDD, loriginal
restera inchang .
14
Les "Resilient Distributed Datasets"
Les RDD supportent deux types dop rations :
"
Les transformations: ne retournent pas de valeur seule, elles retournent
un nouveau RDD. Rien nest valu lorsque lon fait appel une fonction
de transformation, cette fonction prend juste un RDD et retourne un
nouveau RDD.
" Les fonctions de transformation sont par exemple map, filter, flatMap,
groupByKey, reduceByKey, aggregateByKey, pipe et coalesce.
"
Les actions: valuent et retournent une nouvelle valeur. Au moment
o une fonction daction est appel e sur un objet RDD, toutes les
requ tes de traitement des donn es sont calcul es et le r sultat est
retourn .
" Les actions sont par exemple reduce, collect, count, first, take,
countByKey et foreach.
15
16
Exemples de transformations
17
Actions
18
19
Spark: Actions et transformations
" Pour une liste compl te et des sp cifications
d taill es de Spark, consulter:
https://spark.apache.org/docs/latest/api/scala/in
dex.html#org.apache.spark.sql.Dataset
" Voici quelques exemples dactions les plus
utilis es:
20
21
Exemples de transformations
22
Activit
" Choisir une action et proposer un exemple.
" Choisir une transformation et proposer un
exemple.
Publicité
" Reference: http://b3d.bdpedia.fr/spark-
batch.html
23
Fonction Map
RDD
Bonjour les Amis
Bonjour les Amis
Bonjour les Amis
&
Bonjour les Ennemis
Bonjour les Ennemis
Bonjour les Ennemis
RDD
bonjour les amis
bonjour les amis
bonjour les amis
&
bonjour les ennemis
bonjour les ennemis
bonjour les ennemis
24
Fonction FlatMap
RDD
bonjour les amis
bonjour les amis
bonjour les amis
&
bonjour les ennemis
bonjour les ennemis
bonjour les ennemis
RDD
Bonjour
Les
amis
&
Bonjour
Les
ennemis
25
Fonction Map
RDD
Bonjour
Les
amis
&
Bonjour
Les
ennemis
RDD [(string,int)]
(Bonjour,1)
(Les,1)
(amis,1)
&
(Bonjour,1)
(Les,1)
(ennemis,1)
26
Shuffle
RDD [(string,int)]
RDD [(string,iterator )]
RDD [(string,int)]
(Bonjour,1)
(Les,1)
(amis,1)
&
(Bonjour,1)
(Les,1)
(ennemis,1)
(Bonjour,1, &,1)
(Les,1, &,1)
Publicité
&
(amis,1)
&
.mapValues
(Bonjour,+2)
(Les,+2)
&
(amis,+1)
&
(ennemis,1)
(ennemis,+1)
GroupByKey
27
Les 2 premiers les plus fr quents
RDD [(string,int)]
(Bonjour,+2)
(Les,+2)
&
(amis,+1)
&
(ennemis,+1)
RDD [(int,string)]
(+2,bonjour)
(+2, les)
&
(+1, amis)
&
(+1,ennemis)
28
Les 2 premiers les plus fr quents
RDD [(int,string)]
RDD [(int,string)]
(+2,bonjour)
(+2, les)
&
(+1, amis)
&
(+2,bonjour)
(+2, les)
&
(+1, amis)
&
(+1,ennemis)
(+1,ennemis)
Array [(int,string)]
(+2,bonjour)
(+2, les)
29
Autre alternative avec Top(N)
RDD [(int,string)]
(+2,bonjour)
(+2, les)
&
(+2,bonjour)
LOCAL Top
(+2, les)
(+1, amis)
LOCAL Top
(+1, amis)
&
(+1,ennemis)
LOCAL Top
(+1,ennemis)
Reduction
(+2,bonjour)
(+2, les)
30
Le programme total
31