Spark : Présentation et Fonctionnement du Framework Analytique de MapReduce, Exercises of Spanish

Découvrez Spark, le framework analytique open-source et évolutionné de MapReduce développé à l'origine par l'Université de Berkeley en Californie. Ce document présente les caractéristiques clés de Spark, son architecture et son fonctionnement, ainsi que ses avantages et inconvénients. Il explique également comment utiliser Spark grâce à des exemples d'opérations sur des RDD (Resilient Distributed Datasets).

Typology: Exercises

2020/2021

Uploaded on 06/20/2021

unknown user
unknown user 🇲🇦

1 document

1 / 23

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
Chapitre 5
Spark
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Partial preview of the text

Download Spark : Présentation et Fonctionnement du Framework Analytique de MapReduce and more Exercises Spanish in PDF only on Docsity!

Chapitre 5

Spark

  • 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:  Cluster Spark natif.  Hadoop (YARN).  Mesos (Spark natif + scheduler Mesos).
  • C est un moteur MapReduce plus évolué, plus rapide pour les tâches impliquant de multiples maps et/ou reduce.  Utilisation de la mémoire pour optimiser les traitements.  Des API’s pour faciliter et optimiser les étapes d’analyses.

Spark : Présentation

  • Spark est développé en Scala et supporte quatre langages: Scala, Java, Python (PySpark), R (SparkR).
  • Une liste d’Operaters pour faciliter la manipulation des données au travers des RDD’S.  Map, filter, groupBy, sort, join, leftOuterJoin, rightOuterJoin, reduce, count, reduceByKey, groupByKey, first, union, cross, sample, cogroup, take, partionBy, pipe, save,…

Spark : Facile à utiliser (1/2)

Spark : Facile à utiliser (2/2)

  • 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:  Distribués.  Partitionnés (pour permettre à plusieurs noeuds de traiter les données).  Redondés (limite le risque de perte de données).  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:  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.  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 - RDD

Fonctionnement de Spark

  • Resilient Distributed Datasets (RDDs)
    • Structures accessibles en lecture seule
    • Stockage distribué en mémoire centrale
    • Restriction aux opérations sur gros granules
    • Journalisation pour assurer la tolérance aux fautes
      • Possibilité de rejouer les transformations vs checkpointing

Fonctionnement des RDD

3. Actions
  • collect : retourne les éléments
  • count : comptes les éléments
  • save : écrit les données sur le SF
4. Paramétrage du stockage en mémoire
  • persist : force le maintien en mémoire unpersist : force l’écriture sur disque
  • Notes :
  • par défaut, les RDD sont persistantes en mémoire
  • Si manque d’espace alors écriture sur disque
  • Possibilité d’attribuer des priorités

Illustration d’une RDD

On considère une chaîne de traitements classique

  1. Chargement depuis stockage (local ou hdfs)
  2. Application d’un filtre simple
  3. Cardinalité du résultat de 2
  4. Paramétrage de la persistance 1 lines=spark.textFile("hfds:://file.txt") 2 data=lines.filter(_.contains( "word")) 3 data.count 4 data.persist()

API Spark

  • Documentation https://spark.apache.org/docs/latest/
  • Plusieurs langages hôtes
    • Java
    • Scala (langage fonctionnel sur JVM)
    • Python
  • Choix pour ce cours = Scala (Scalable Language)
    • Documentation http://www.scala-lang.org/api/current/#package
    • Tutoriel http://docs.scala-lang.org/tutorials/

Spark : Un framework analytique

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 nombreuses opérations sur les données et notamment sur les mêmes données antérieures, fortement supérieures (jusqu'à 100 x plus rapide).
  • Même sans travailler plusieurs fois sur les mêmes données ou sans persistance explicite particulière, le paradigme de programme parallélisé en graphe acyclique couplé aux RDDs et leurs propriétés permet des améliorations notables (~ 10 x) pour de nombreux problèmes dépassant le cadre rigide du simple map/shuffle/reduce lancé une fois.

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 (2/5)

Spark : Usage /Manipulation (3/5)