Chap3 Spark

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 29

ISET Djerba

CHAP 3 : Spark

Enseignant : Abdelhakim TRAOULI


Spark : Présentation

• Traitement de larges volumes de données.


• Traitement distribué.
• Spark est développé en Scala et supporte quatre langages:
Scala, Java, Python (PySpark), R (SparkR).
• Framework de conception et d'exécution Map/Reduce.
Spark : Historique

• 2009: Développé à l'université de Californie à Berkeley par


AMPLab. But: accélérer le traitement des systèmes Hadoop.
• Juin 2013: Spark est transmis à la fondation Apache et devient
l'un des projets les plus actif « Top Level project »
• Mai 2014: version 1.0.0
• Juillet 2017: version 2.0
• Juin 2020: version 3.0
Spark Vs. Hadoop

 Proximité avec Hadoop:


– Même cas d'utilisation
– Même modèle de développement: MapReduce
– Intégration dans l’Ecosystème
 Plus simple qu'Hadoop:
– API plus simple à prendre en main
– Modèle MapReduce relâché
– Spark Shell: traitement interactif
Spark Vs. Hadoop

• Plus rapide qu’Hadoop


• 5 Novembre 2014: Spark a gagné le Daytona GraySort Contest.
Objectif: trier 100 To de données le plus rapidement possible.
Hadoop MapRed Spark
72 minutes 23 minutes
2100 nœuds (50400 cores) 206 nœuds (6592 cores)

La puissance de Spark fut démontrée en étant 3 fois plus rapide et en utilisant


approximativement 10 fois moins de machines.
Spark Vs. Hadoop

Modèle d’exécution

Pour chaque opération Map/Reduce: 4 mouvements


sur le disque (2 lectures + 2 écritures)

Problème de performance:
 soit les données sont très grandes
 soit besoin de faire des opérations itératives
Spark Vs. Hadoop

Modèle d’exécution
Spark Vs. Hadoop

Modèle de programmation:
 Hadoop propose seulement 2 opérations: Map et
Reduce
 Spark propose un modèle plus souple: Map, filter,
groupBy, sort, join, reduce, count, reduceByKey,
groupByKey, take, …
Spark : Caractéristiques

 RDD: Resilient Distributed Dataset


 Abstraction, collection traitée en parallèle
 Tolérant à la panne
 Manipulation de tuples:
Clé/valeur
Tuples indépendants les uns des autres
Spark : Les RDDs

• RDD: Resilient Distributed Dataset:


 Dataset : un ensemble de données (une collection).
 Distributed : cet ensemble est distribué afin d’être
découpée pour être traitée dans les différents nœuds.
 Resilient : Il est résilient, car il pourra être relu en cas
de problème.
Spark : Les RDDs

 RDD :simple à créer et peut être obtenu à partir de multiples


sources :
 Une collection (List, Set), transformée en RDD
 Un fichier local ou distribué (HDFS) dont le format est configurable: texte,
SequenceFile Hadoop, JSON.…
 Une base de données: JDBC, HBase…
 Un autre RDD auquel est appliqué une transformation (un filtre, un
mapping.…).
 C’est possible d'exporter le contenu d’un RDD dans un fichier, dans
une base de données ou dans une collection.
Spark : Les RDDs

• Les RDD possèdent deux types de méthodes :


 Les transformations qui donnent en sortie un autre RDD.
 Les actions qui donnent en sortie... autre chose qu'un RDD.
Spark : Les RDDs

• Exemple de transformations [la librairie standard de Spark] :


 map(func): applique une fonction à chacune des données.
 filter(func): permet d'éliminer certaines données.
 distinct(): supprime les doublons.
 groupByKey(): transforme des clés-valeurs (K, V) en (K, W)
où W est un object itérable. (K, U) et (K, V) seront
transformées en (K, [U, V]).
Spark : Les RDDs

• Exemple d’actions [la librairie standard de Spark] :


 reduce(func): applique une réduction à l'ensemble des données.
 collect(): retourne toutes les données contenues dans le RDD
sous la forme de liste.
 count(): retourne le nombre de données contenues dans RDD
 takeOrdered(n,key_func): retourne les n premiers éléments du
RDD ordonnés selon key_func.
Spark : Les RDDs

 DAG « Directed Acyclic Graph » (graphe acyclique orienté) :


 les nœuds sont les RDD et les résultats.
 les relations entre les nœuds sont soit des transformations, soit des actions.
Ces relations sont orientées : passage d'un RDD à un autre se fait dans un seul
sens.
Le graphe est dit acyclique car aucun RDD ne permet de se transformer en
lui-même via une série d'actions.
Spark : Les RDDs

 Tolérance aux pannes:


 Si un nœud du DAG devient indisponible, il peut être régénéré à partir
de ses nœuds parents.
Spark : Le Fonctionnement

 Un cluster Spark est composé de :


 un ou plusieurs workers : chaque worker instancie un
executor chargé d'exécuter les différentes tâches de calcul.
 un driver : chargé de répartir les tâches sur les différents
executors.
 un cluster manager : chargé d'instancier les différents
workers.
Spark : Le Fonctionnement
Spark : Le Fonctionnement

 Différence entre worker et executer:


 un worker : une machine physique
 un executor :une application qui tourne sur cette machine
Exécution de plusieurs applications Spark sur une même
machine en même temps
Chaque worker a alors plusieurs executors
un executor comme un thread de calcul.
Spark : Le Fonctionnement

 Le cluster manager :
responsable de l'allocation des ressources, surtout
dans le cas ou plusieurs applications concurrentes
sont exécutées sur le cluster Spark.
Spark : Le Fonctionnement

 Répartition des données et distributions des taches:


 Les données sont découpées en partitions.
 Chaque partition est traitée par un des executors.
 Le traitement d'une partition représente une tâche.
 Un cluster Spark ne peut traiter qu'une tâche à la
fois par executor.
Spark : Le Fonctionnement

 Répartition des données et distributions des taches:


 La taille d'une partition doit rester inférieure à la mémoire disponible pour son
executor.
 Le nombre de partitions détermine le nombre de tâches à réaliser de manière
concurrente sur le cluster.
 Un ensemble de tâches réalisées en parallèle constitue une étape
 Toutes les tâches d'une étape doivent être terminées avant de passer à l'étape
suivante.
 Un job Spark est composé d'une suite d'étapes.
 la progression d'un job peut être mesurée grâce au nombre d'étapes réalisées.
Spark : Le Fonctionnement
Spark : Le Fonctionnement
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 très facilement lire des
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).
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.
Spark : Usage /Manipulation
Spark : Usage /Manipulation
Spark : Usage /Manipulation

Vous aimerez peut-être aussi