Chapitre 4
Spark
Big Data - 2019
1
Plan
Critique de MapReduce
Apache Spark
Fonctionnalit s de Spark
Ecosyst me de Spark
Architecture de Spark
RDD
DataFrame
Dataset
2
Critique de MapReduce
Si on souhaite mettre en place une solution complexe, il est
n cessaire dencha ner une s rie de jobs MapReduce et de les
ex cuter s quentiellement.
=> Il est difficile dexprimer des op rations complexes en
nutilisant que MapReduce.
3
Critique de MapReduce
Apr s une op ration Map ou Reduce, le r sultat est crit sur disque.
Les Mappers et Reducers communiquent entre eux travers les
donn es crites sur disque.
=> Op rations de lectures/ critures tr s co teuses en temps!
=> MapReduce est une bonne solution pour les traitements
passe unique.
=> MapReduce nest pas la meilleure solution pour les traitements
plusieurs passes.
Solution : Spark
4
Spark : Pr sentation
" Framework de conception et d'ex cution Map/Reduce.
" Originellement (2014) un projet de l'universit de Berkeley en Californie, d sormais
un logiciel libre de la fondationApache.
" Licence Apache.
" Trois modes d'ex cution:
q Cluster Spark natif.
q Hadoop (YARN).
q Mesos (Spark natif + scheduler Mesos).
" Cest un moteur MapReduce plus volu , plus rapide pour les t ches
impliquant de multiples maps et/ou reduce.
q Utilisation de la m moire pour optimiser les traitements.
q Des APIs pour faciliter et optimiser les tapes danalyses.
2
Spark : Plus rapide
Big Data - 2019
3
Apache Spark
Framework de traitement Big Data open source.
D velopp en 2009 par AMPLab University of California
Berkeley.
En 2010 il est pass open source sous forme de projet
Apache.
7
Apache Spark
Framework complet et unifi adapt au traitement batch et temps r el de
divers types de donn es.
Il 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 est crit en Scala et sex cute sur la Machine Virtuelle Java (JVM).
Il permet d crire facilement et rapidement des applications en Java, Scala,
R ou Python.
Il est possible de lutiliser de fa on interactive pour requ ter les donn es
depuis un shell.
8
Apache Spark
En plus des op rations Map et Reduce, Spark supporte les
requ tes SQL et le streaming de donn es.
Spark propose des fonctionnalit s de machine learning et de
traitements orient s graphe.
Ces possibilit s peuvent tre utilis es en stand-alone ou en les
combinant en une cha ne de traitement complexe.
9
Apache Spark
Spark permet de d velopper des pipelines de traitement de
donn es complexes, plusieurs tapes, en sappuyant sur des
graphes orient s acycliques (DAG).
Il 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.
10
Apache Spark
Il est possible de d ployer des applications Spark sur un cluster
Hadoop v1 existant (avec SIMR Spark-Inside-MapReduce),
ou sur un cluster Hadoop v2 YARN.
En g n ral, Spark nest pas consid r comme un
rempla ant de Hadoop mais comme une alternative au
MapReduce dHadoop.
Advertisement
11
Apache 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 fois sur le m me jeu de
donn es.
Le moteur dex cution de Spark est con u pour travailler
aussi bien en m moire que sur disque.
Spark essaie 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.
12
Fonctionnalit s de Spark
Les autres fonctionnalit s propos es par Spark comprennent :
Des fonctions autres que Map et Reduce ;
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).
13
Ecosyst me de Spark
14
Ecosyst me de Spark
Spark Core :
Moteur de base de Spark
Gestion de t ches
Gestion de m moire
R cup ration derreurs
Interaction avec le stockage
D finition des classes de RDD
15
Ecosyst me de Spark
A part les API principales de Spark, son cosyst me contient
des librairies additionnelles telles que :
Spark streaming : est utilis pour le traitement temps-r el des
donn es en flux. Il sappuie sur un mode de traitement en
"micro batch" et utilise Dstream (cest- -dire une s rie de
RDD (Resilient Distributed Dataset)).
Spark SQL : Gr ce des requ tes de type SQL, 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.
16
Ecosyst me de Spark
MLlib : cest une librairie de machine learning qui contient
tous les algorithmes et utilitaires dapprentissage classiques,
comme la classification, la r gression, le clustering, en plus des
primitives doptimisation sous-jacentes.
GraphX : cest une API (en version alpha) pour les traitements
de graphes. Elle 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.
GraphX inclut une collection toujours plus
importante
dalgorithmes et de builders pour simplifier les t ches danalyse
de graphes.
17
Ecosyst me de Spark
Il existe aussi des adaptateurs pour int gration dautres
produits comme Cassandra (Spark Cassandra Connector) et R
(SparkR).
Avec le connecteur Cassandra, il est possible dutiliser Spark
pour acc der des donn es stock es dans Cassandra et r aliser
des analyses sur ces donn es.
18
Architecture de Spark
Larchitecture de Spark est bas e sur
principaux :
trois composants
API (Scala, Java,
Python)
Stockage de
donn es (HDFS,
autres formats)
Gestion de
ressources
(stand-alone,
YARN&)
19
Architecture de Spark
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.
LAPI permet aux d veloppeurs de cr er des applications
Spark en utilisant une API standard. LAPI existe en Scala, Java
et Python.
Spark peut tre d ploy comme un serveur autonome ou sur
Advertisement
un framework de traitements distribu s comme Mesos ou
YARN.
20
Spark : Facile utiliser (1/2)
"
Spark est d velopp en Scala et supporte quatre langages: Scala, Java, Python
(PySpark), R (SparkR).
" Une liste dOperaters pour faciliter la manipulation des donn es au travers des RDDS.
q Map, filter, groupBy, sort, join, leftOuterJoin, rightOuterJoin, reduce, count, reduceByKey,
groupByKey, first, union, cross, sample, cogroup, take, partionBy, pipe, save,&
4
Spark : Facile utiliser (2/2)
Big Data - 2019
2
3
Spark : Architecture
" Spark est capable de
d terminer quand il aura
besoin de s rialiser les
donn es / les r organiser; et
ne le fait que quand c'est
n cessaire.
" On peut galement
explicitement lui demander
de conserver des donn es en
RAM, parce qu'on sait
qu'elles seront n cessaires
entre plusieurs instances
d' criture disque.
Big Data - 2019
2
4
Spark : Architecture - RDD
" Au centre du paradigme employ par Spark, on trouve la notion de RDD, pour Resilient
Distributed Datasets.
Il s'agit de larges hashmaps stock es en m moire et sur lesquelles on peut appliquer des
traitements.
Ils sont:
"
"
q Distribu s.
q Partitionn s (pour permettre plusieurs noeuds de traiter les donn es).
q Redond s (limite le risque de perte de donn es).
q En lecture seule: un traitement appliqu un RDD donne lieu la cr ation d'un nouveau RDD.
" Deux types d'op rations possibles sur les RDDs:
q Une transformation: une op ration qui modifie les donn es d'un RDD. Elle donne lieu la
cr ation d'un nouveau RDD. Les transformations fonctionnent en mode d' valuation lazy:
elles ne sont ex cut es que quand on a v ritablement besoin d'acc der aux donn es. "map"
est un exemple de transformation.
q Une action: elles acc dent aux donn es d'un RDD, et n cessitent donc son valuation
(toutes les transformations ayant donn lieu la cr ation de ce RDD sont ex cut es l'une
apr s l'autre). "saveAsTextFile" (qui permet de sauver le contenu d'un RDD) ou "count"
(qui renvoie le nombre d' l ments dans un RDD) sont des exemples d'actions.
Spark : Architecture - Ex cution
" Les applications Spark sex cutent comme un ensemble de processus ind pendants sur un
cluster, coordonn s par un objet SparkContext du programme principal, appel Driver
Program.
"
Pour sex 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 lallocation de
ressources aux applictions.
" Une fois connect , Spark lance des executors sur les nSuds du cluster, des processus qui lancent
des traitements et stockent les donn es pour les applications.
"
Il envoie ensuite le code de lapplication (Jar ou ficher python) aux executors. SparkContext
envoie ensuite les Tasks aux executors pour quils les lancent.
Architecture de Spark
Driver : effectue la distribution les donn es et le traitement sur
les noeuds de travail.
SparkContext : objet du programme principal qui coordonne
entre les diff rents processus sur un cluster.
Executor : processus qui lance des traitements et stocke les
donn es pour les applications
27
Resilient Distributed Dataset (RDD)
Un concept au cSur du framework Spark.
Collection d l ments d coupables par Spark et
traitables de mani re distribu e.
Il peut porter tout type de donn e et est stock par
Spark sur diff rentes partitions.
28
Resilient Distributed Dataset
Les RDD supportent deux types dop rations :
Les transformations :
Ne retournent pas de valeur
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.
Exemples de fonctions : map, filter, flatMap,
Advertisement
groupByKey,reduceByKey, aggregateByKey&
29
Resilient Distributed Dataset
Les actions :
Evaluent 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 .
Exemples dactions : reduce, collect, count,
first, take, countByKey et foreach.
30
Resilient Distributed Dataset
Les RDD permettent de r arranger les calculs et doptimiser
le traitement.
Les RDD sont reconstructibles :
ils sont tol rants aux
pannes car un RDD sait comment recr er et recalculer son
ensemble de donn es.
Les RDD sont immuables. Pour obtenir une modification
faut y appliquer une transformation, qui
dun RDD,
retournera un nouveau RDD, loriginal restera inchang .
il
31
Traitement dans Spark
Spark supporte les valuations paresseuses des requ tes
cest- -dire que les transformations ne sex cutent sur le cluster
que si on en a besoin (une action est invoqu e).
Il est possible de demander la persistance dun RDD :
chargement en m moire du RDD pour le r utiliser en cas de
besoin au lieu de refaire la transformation.
32
DataFrames
2011 RDD :
Collection distribu e
Op rateurs fonctionnels
Ne suis aucun sch ma
2013 nouvelle abstraction : DataFrame
Plus structur e
Repr sentation interne plus optimis e que le RDD
Abstraction principale de SparkSQL
33
Dataset
2015 Spark 2 : Dataset
Nouvelle abstraction de donn es plus large que le
DataFrame
Typ : Dataset [ T ]
Avantage : travailler avec des expressions typ es dont on
connait toutes les propri t s
34
Spark : Un framework analytique
BIG DATA - 2019
35
Spark : Avantages
" Performances sup rieures celles de Hadoop pour une large quantit de
probl mes; et presque universellement au moins quivalentes pour
le
reste.
" API simple et bien document e; tr s simple utiliser. Paradigme plus
souple qui permet un d veloppement conceptuellement plus simple.
" Tr s int grable avec d'autres solutions; peut
lire des
tr s facilement
donn es depuis de nombreuses
sources, et propose des couches
d'interconnexion tr s faciles utiliser pour le reste (API d di e Spark
Streaming, Spark SQL).
" APIs d di es pour le traitement de probl mes en machine learning (Spark
MLlib) et graphes (Spark GraphX).
BIG DATA - 2019
36
Spark : Performances
" Fortement d pendantes du probl me mais d'une mani re g n rale
sup rieures Hadoop. Dans le cas de probl mes complexes, effectuant de
sur les m mes
nombreuses op rations sur les donn es et notamment
donn es ant rieures, fortement sup rieures (jusqu' 100x plus rapide).
" M me sans travailler plusieurs fois sur les
m mes donn es ou sans persistance explicite
programme
particuli re,
le paradigme de
coupl aux
parall lis en graphe acyclique
RDDs et leurs propri t s
permet des am liorations notables (~10x)
probl mes d passant
lanc une fois.
de nombreux
le cadre rigide du simple map/shuffle/reduce
Advertisement
pour
BIG DATA - 2019
Spark : Inconv nients
" Spark consomme beaucoup plus de m moire vive que Hadoop, puisqu'il
est susceptible de garder une multitude de RDDs en m moire. Les
serveurs n cessitent ainsi plus de RAM.
"
Il est moins mature que Hadoop.
" Son cluster manager ( Spark Master ) est encore assez immature et
laisse d sirer en terme de d ploiement
/ haute disponibilit /
fonctionnalit s additionnelles du m me type; dans les faits, il est souvent
d ploy via Yarn, et souvent sur un cluster Hadoop existant.
BIG DATA - 2019
Spark : Usage /Manipulation (1/5)
BIG DATA - 2019
39
Spark : Usage /Manipulation (2/5)
BIG DATA - 2019
40
Spark : Usage /Manipulation (3/5)
BIG DATA - 2019
41
Spark : Usage /Manipulation (4/5)
BIG DATA - 2019
42
Spark : Usage /Manipulation (5/5)
La manipulation de lexemple "Word Count" est fournie en "TP Spark"
sous la VM Cloudera o Spark est install et pr t lutilisation.
BIG DATA - 2019
43
Exemples 2 - TP
Construction dun dataframe Spark appel restaurants_df
partir de la table restaurant existante dans Cassandra. Le
sch ma (noms des colonnes) est connu mais le type des
colonnes nest pas connu au sein du dataframe.
val restaurants_df =
spark.read.cassandraFormat("restaurant",
"resto_ny").load()
restaurants_df.printSchema()
restaurants_df.show()
44
Exemples
R alisation dun filtre correspondant au where dans SQL :
val manhattan = restaurants_df.filter("borough =
'MANHATTAN'")
manhattan.show()
45
Exemples
Construction dun Dataset dont les colonnes sont typ es
case class Restaurant(id: Integer, Name: String,
Street:
BuildingNum:
borough:
String,
String,
Integer,
CuisineType: String)
String,
ZipCode:
String,
Phone:
val restaurants_ds= restaurants_df.as
Pour ceci
programmation (ici, Scala) et demander la conversion.
il a fallu d finir une classe dans le langage de
46
Exemples
R alisation du m me filtre sur le dataset :
val r = restaurants_ds.filter(r => r.borough ==
"MANHATTAN")
R alisation dagr gats par arrondissement :
val comptage_par_borough =
restaurants_ds.groupBy("borough").count()
47
Conclusion
RDD : donn es au sch ma tr s flexible, mais beaucoup plus difficile
manipuler.
DataFrame/ Dataset :
Donn es au sch ma tr s contraint offrant un niveau de s curit
lev .
Concepteur : possibilit de r f rencer des champs et de leur
appliquer des op rations standards en fonction de leur type sans
avoir crire une fonction sp cifique pour la moindre op ration
=> Rend le code beaucoup lisible et concis.
Syst me : la connaissance du sch ma facilite les contr les avant
ex cution
48