SlideShare une entreprise Scribd logo
1  sur  47
Présenté par :
BENABDELKADER MAROUANE
NABIL Anass
Université Sultan Moulay Slimane
École Supérieure de technologie – Fkih Ben Salah
Licence Professionnelle Infrastructures, Traitement et Analyse de données Massives (BIG DATA)
Année universitaire : 2023-2024
Spark - An In-Memory Distributed
Computing Engine
Encadré par :
Prof A.Amine
Plan
I. Spark : Définition
II. Batch Processing et Stream Processing
III. Les composants de Spark
IV. Architecture de Spark
V. Les caractéristiques de Spark
VI. Difference entre Spark et MapReduce
VII. RDD ( Resilient Distributed Datasets )
VIII.RDD : Transformations et Actions
IX. PySpark , Tp Pyspark
2
I - Spark :
● Apache Spark est un Framework Big Data de traitement de données open source à grande échelle. Il est
particulièrement adapté pour les très grandes volumétries de données et fonctionne de manière distribuée,
sous forme de clusters. Son utilisation est principalement dédié aux applications du Machine Learning et des
pipelines de données ETL (Extract, Transform, Load) .
● Spark Réalise des traitements par lots (Batch) ou à la volée (Streaming)
● Permet d’integrer tous les outils de BIG DATA (comme HDFS)
● Spark offre un traitement itératif et interactif
3
Traitement par lots “Batch Processing”
● Le traitement par lots (en anglais, "batch processing") est une technique de traitement de
données qui consiste à collecter, traiter et analyser un ensemble de données ou de tâches en
une seule opération, généralement de manière planifiée et périodique.
● Contrairement au traitement en temps réel, où les données sont traitées au fur et à mesure de
leur arrivée.
● le traitement par lots implique de rassembler un volume important de données avant de les
traiter en une seule fois.
4
Traitement par volée “ Stream Processing ”
● Le traitement par volée (ou « stream processing ») consiste à traiter les données en temps réel à mesure
qu'elles arrivent, contrairement au traitement par lots qui traite les données en ensembles complets. Il est
idéal pour les flux de données continus, permettant des réactions rapides, mais peut être plus complexe à
mettre en œuvre. Apache Spark propose Spark Streaming pour cette fonctionnalité.
● Le traitement de streaming via micro-batch dans Spark Streaming offre un équilibre entre les temps de
réponse rapides nécessaires dans le traitement en continu et l'efficacité du traitement par lots, le tout dans
un environnement unifié.
5
6
Les Composants de Spark:
● C’est le moteur d’exécution du spark, la base du
framework
● Il fournit les fonctionnalités de base de Spark,
telles que la distribution de données et la
parallélisation des tâches, des fonctionnalités
lectures/écritures de base. L’API RDD est
implémentée (Resilient Distributed Datasets)
sur Spark Core, qui est une collection logique de
données partitionnées sur le cluster.
7
Spark Core :
Les Composants de Spark:
● Spark SQL est une composante essentielle
d'Apache Spark qui offre une interface SQL pour
interagir avec des données structurées et semi-
structurées, améliorant ainsi la performance du
traitement de données.
● Il permet aux utilisateurs d'exécuter des
requêtes SQL ou HQL sur une variété de sources
de données, ce qui simplifie le traitement et
l'analyse des données dans l'écosystème Spark.
8
Spark SQL :
Les Composants de Spark:
● Spark Streaming est un composant d'Apache
Spark qui permet d'analyser des flux de
données en temps réel, idéal pour des
applications nécessitant une réponse
instantanée aux événements en cours.
9
Spark Streaming :
Les Composants de Spark:
● MLlib, intégrée à Apache Spark, est une
bibliothèque de machine learning robuste et
scalable. Elle offre des algorithmes divers
pour la classification, la régression, le
clustering, et le filtrage collaboratif, optimisés
pour le traitement de données massives.
Grâce à son intégration étroite avec Spark,
MLlib permet une analyse de données rapide
et efficace, rendant le machine learning
accessible et performant sur de grands
ensembles de données.
10
MLlib (librairie Machine Learning) :
Les Composants de Spark:
● GraphX est une bibliothèque de traitement de
graphes intégrée à Apache Spark. Elle offre des
outils pour construire, manipuler et analyser des
graphes à grande échelle de manière efficace et
distribuée. Il étend Spark RDD en introduisant le
concept de Resilient Distributed Property Graph,
un graphe où chaque nœud et chaque arête a des
propriétés associées. Cette bibliothèque inclut des
API pour la création de graphes, la modification de
leurs structures, la réalisation de calculs sur les
nœuds et les arêtes, et l'implémentation
d'algorithmes graphiques
11
GraphX :
Les Composants de Spark:
● Dans le contexte de Spark, les "packages" font
généralement référence à des bibliothèques
supplémentaires ou à des modules qui peuvent
être ajoutés à l'installation de Spark pour étendre
ses capacités. Ces packages peuvent inclure des
connecteurs pour diverses sources de données, des
bibliothèques pour le traitement avancé des
données, des extensions pour le machine learning,
etc.
12
Packages :
Les Composants de Spark:
● Il faut bien comprendre que Spark n’est pas
une base de données et ne stocke rien, il se
base sur des systèmes de stockage comme
Hadoop, AWS S3, Cassandra, MongoDB, etc.
13
Stockage
Les Composants de Spark:
● Spark Prise en charge de plusieurs langages
de programmation : Scala, Java, Python et R,
ce qui facilite le développement
d'applications Big Data dans le langage de
programmation de votre choix.
14
langage de programmation
Architecture Spark:
Apache Spark adopte une architecture maître-esclave, dans laquelle le programme Driver agit en tant que maître,
coordonnant et distribuant les tâches de traitement aux Workers, ou nœuds esclaves, chacun hébergeant des
Executors pour exécuter ces tâches, avec le Cluster Manager supervisant la gestion des ressources du cluster.
15
Architecture Spark:
Driver Program: Le driver program est le point d'entrée de l'application Spark. Il contient le code de l'application
Spark, y compris les transformations et les actions à effectuer sur les données. Le driver program communique avec
le Cluster Manager pour allouer des ressources et coordonner les tâches.
16
Architecture Spark:
Cluster Manager: responsable de la gestion des ressources du cluster, telles que les nœuds de calcul. Spark prend en
charge plusieurs gestionnaires de cluster, notamment Apache Mesos, Hadoop YARN, et son propre gestionnaire de
cluster appelé Standalone. Le cluster manager alloue des ressources aux applications Spark et surveille leur
exécution.
17
Architecture Spark:
Worker Node: un nœud (ou une machine) dans le cluster Spark qui est utilisé pour exécuter des parties des
applications Spark. Chaque Worker Node est contrôlé par le Master Node (ou Driver Node) et exécute les tâches
assignées.
18
Architecture Spark:
Executor: Un Executor dans Spark est un processus lancé sur les Worker Nodes qui exécute les tâches et stocke les
données pour les applications Spark. Chaque Worker Node peut avoir un ou plusieurs Executors. Les Executors sont
responsables de l'exécution des tâches assignées et du stockage de données en mémoire ou sur disque. Ils jouent un
rôle clé dans la performance de traitement des données.
19
Architecture Spark:
Cache: Le cache dans un Worker Node d'Apache Spark fait référence à l'utilisation de la mémoire (RAM) pour stocker
temporairement des données. Cela permet un accès rapide aux données fréquemment utilisées, ce qui peut améliorer
significativement les performances de l'application.
20
Architecture Spark:
Task: Une Tache dans Apache Spark est une unité de travail individuelle qui est exécutée sur un Executor dans un
Worker Node. Elle correspond à une opération spécifique sur une partition d'un RDD (Resilient Distributed Dataset)
ou d'un DataFrame, comme le traitement, le filtrage ou l'agrégation des données. Les tasks sont les éléments de base
du traitement parallèle dans Spark, permettant le traitement distribué des données sur plusieurs nœuds du cluster.
21
22
1
2
3
4
6 7
5
8
Lazy
transformation
Architecture Spark:
Job: Dans Apache Spark, un "job" correspond à une série d'opérations de traitement de données initiées par une
action Spark. Lorsqu'une action est appelée sur un RDD (Resilient Distributed Dataset) ou un DataFrame, Spark
soumet un "job" au cluster pour traiter ces données.
Un job est composé de plusieurs "stages". Un stage est un ensemble de tâches qui peuvent être exécutées en
parallèle
Spark organise les opérations en stages en fonction des opérations de transformation qui nécessitent, un stage est
terminé lorsque toutes ses tâches sont terminées.
23
Architecture Spark:
24
1. Driver Program: Le Driver exécute le code principal de l'application Spark
et initialise le SparkContext, qui est le cœur de l'application et gère la
configuration, l'établissement de la connexion au cluster, la distribution du
code, et plus.
2. Resource Allocation by Spark Context: Le SparkContext communique avec
le Cluster Manager pour demander des ressources pour exécuter
l'application. Cela inclut la demande de lancement des Executors sur les
Worker Nodes.
3. Resource Allocation by Cluster Manager: Le Cluster Manager attribue les
ressources disponibles, en choisissant les Worker Nodes qui exécuteront
les Executors pour le job en question.
4. Confirmation to Spark Context: Une fois que le Cluster Manager a alloué
les ressources, il informe le SparkContext des détails des ressources
allouées, permettant au Task Scheduler de savoir où les tâches peuvent
être exécutées.
Architecture Spark:
25
5. Job Creation: Lorsqu'une action est rencontrée dans le code, le
SparkContext crée un job qui est une instance d'exécution des
transformations RDD nécessaires pour obtenir le résultat de l'action.
6. DAG Scheduler: Le DAG Scheduler crée un plan d'exécution sous la
forme d'un graphe acyclique dirigé qui illustre les RDDs, les
transformations et les actions. Les stages sont formés ici, où chaque
stage contient des tâches qui peuvent être exécutées en parallèle.
7. Task Scheduling: Le Task Scheduler ordonne les stages basés sur les
dépendances et les contraintes de données. Il décide de l'ordre
d'exécution des stages et prépare l'ordonnancement des tâches au
sein de chaque stage.
8. Task Distribution: Le Task Scheduler envoie ensuite les tâches aux
Executors sur les Worker Nodes pour être exécutées. Les Executors
exécutent les tâches et retournent les résultats au Driver.
Les principales caractéristiques de Spark
● In-Memory Processing : Spark stocke les données en mémoire, ce qui permet des
performances plus rapides par rapport à d'autres systèmes de traitement de données
qui utilisent un stockage sur disque.
● 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.
● Traitement distribué : Spark est conçu pour fonctionner sur un cluster de machines,
permettant de traiter des volumes de données importants en parallèle.
26
Les principales caractéristiques de Spark
● Bibliothèques intégrées : Spark intègre de nombreuses bibliothèques pour des tâches
telles que le traitement de flux en temps réel (Spark Streaming), l'apprentissage
automatique (MLlib), le traitement graphique (GraphX) et l'analyse SQL (Spark SQL).
● Intégration avec d'autres outils : Spark s'intègre facilement avec d'autres outils de
l'écosystème Big Data, tels qu'Hadoop HDFS, Hive, et d'autres solutions de stockage et
de traitement de données.
27
Spark , MapReduce
● MapReduce et Spark sont deux frameworks
de traitement distribué largement utilisés
dans le domaine du traitement de données
à grande échelle.
● Cependant, Spark offre plusieurs avantages
par rapport à MapReduce et surmonte
certaines de ses limites
28
29
vitesse
Ecrit en
Traitement de donnes
Utilisation
cashe
30
31
Spark utilise quoi Pour stockage dans Mémoire ?
● Spark utilise une structure de données fondamentale connue sous le nom de RDD (Resilient
Distributed Datasets).
● Les RDD sont des collections distribuées d'éléments immuables, tolérants aux pannes et pouvant
être traités en parallèle.
● Les RDD sont divisés en partitions et peuvent être exécutés sur différents nœuds de cluster.
● Spark conserve l’historique des opérations qui a permis de constituer un RDD, et la reprise sur
panne s’appuie sur cet historique afin de reconstituer le RDD en cas de panne.
Operations sur RDD
● Pour travailler avec les RDD, Spark propose
deux types d'opérations : les
transformations et les actions.
● Les transformations sont les fonctions qui
sont appliquées sur un RDD existant pour en
dériver un nouveau. Il prend RDD en entrée
et produit un ou plusieurs RDDS en sortie.
● Les actions sont des opérations Spark RDD
qui donnent des valeurs non RDD. Action
renvoie une valeur au programme pilote
après avoir exécuté un calcul sur l'ensemble
de données.
32
33
Transformation Narrow et Wide
chaque partition d’entrée ne
contribuera qu’à une seule
partition de sortie.
des partitions d'entrée contribuer
à de nombreuses partitions de
sortie
Exemple de Transformations dans Spark
34
35
Exemple des actions dans Spark
RDD
● Il existe trois façons de créer un RDD dans Spark :
1. Collections parallélisées : Les éléments de collection sont copiés dans un
ensemble de données distribué qui peut être exploité en parallèle.
2. Ensembles de données externes : lorsque les données sont importées de
l'extérieur de Spark, soit depuis local(Text,csv…), soit depuis hadoop(HDFS).
3. Transformations : Création d'un nouveau RDD à partir d'un existant.
36
37
Apache Spark-RDD
● Des transformations créent des RDD à partir d’une ou deux sources de données.
● S’il n’est pas marqué comme persistant, le RDD sera transitoire et ne sera pas conservé en
mémoire après calcul
● Sinon, il est stocké en RAM, et disponible comme source de données pour d’autres
transformations.
38
Exemple : Analyse de fichiers log
● On veut analyser le fichier journal (log) d’une application X dont un des modules (M) est suspect ,
et par beaucoup d’autres modules.
● On constate qu’un module M produit des résultats incorrects de temps en temps
39
Exemple : Analyse de fichiers log
● On construit donc un programme qui charge le log sous forme de collection, ne conserve que les
messages produits par le module M , et analyse ensuite ces messages
● On peut analyser par
utilisateur, par période,
etc.
● Application de ca dans
Spark parsuite
40
// Chargement de la collection
log = load ("app.log") as (...)
// Filtrage des messages du module M
logM = filter log with log.message.contains ("Module M")
// On rend logM persistant !
logM.persist();
 Analyse à partir de logM
// Filtrage par utilisateur
logUtilisateur = filter logM with log.message.contains ("utilisateur U")
// .. analyse du contenu de logProduit
Code Spark :
Exemple : Analyse de fichiers log
41
Reprise en panne :
Exemple : Analyse de fichiers log
Des RDD structurés
● Un RDD est une ”boîte” (typée) destinée à contenir n’importe quel document, sans aucun
préjugé sur sa structure (ou son absence de structure)
● Spark propose (depuis la version 1.3, avec des améliorations en 1.6 puis 2.0) des RDD
structurés dans lesquels les données sont sous forme tabulaire.
● Ces RDDs structurés sont nommés :
○ Dataset
○ Dataframe
 Nous avons centré sur les RDDs (API bas niveau), mais il est aujourd’hui(presque) toujours
préférable d’utiliser les API de haut niveau, Dataframes et Datasets
 RDD Slow for non-JVM languages like Python
 Ces structures, Datasets et Dataframes, sont assimilables à des tables relationnelles, ou à
d’autres structures tabulaires (Pandas)
42
DataFrame
● Il a été introduit pour la première fois dans la version 1.3 de Spark pour surmonter les
limitations du Spark RDD.
● Les DataFrames :
○ sont des structures de données tabulaires, similaires à des tables de DB
○ sont conçus pour bénéficier des optimisations de requête de Spark.
○ sont étroitement intégrés avec Spark SQL, ce qui signifie que vous pouvez effectuer
des opérations SQL directement sur les DataFrames
43
44
Différence entre Spark et PySpark :
● PySpark est une bibliothèque Python qui fournit une interface pour Apache
Spark, qui est un framework de traitement de données distribué et open
source.
● La principale différence entre les deux est que Spark est écrit en Scala, tandis
que PySpark permet aux développeurs d'utiliser Python pour interagir avec
Spark.
45
46
Merci de
Votre Attention
Sources
 https://analyticsdata24.files.wordpress.com/2020/02/spark-the-definitive-
guide40www.bigdatabugs.com_.pdf
 https://medium.com/@lavishj77/spark-fundamentals-part-2-a2d1a78eff73
 https://realpython.com/pyspark-intro/
 https://meritis.fr/larchitecture-framework-spark/
 https://sparkbyexamples.com/
 https://www.youtube.com/watch?v=_C8kWso4ne4&t=3165s
47

Contenu connexe

Tendances

Spark overview
Spark overviewSpark overview
Spark overviewLisa Hua
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekVenkata Naga Ravi
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Alexis Seigneurin
 
Evaluation of TPC-H on Spark and Spark SQL in ALOJA
Evaluation of TPC-H on Spark and Spark SQL in ALOJAEvaluation of TPC-H on Spark and Spark SQL in ALOJA
Evaluation of TPC-H on Spark and Spark SQL in ALOJADataWorks Summit
 
Introduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingIntroduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingCloudera, Inc.
 
Apache Spark Introduction
Apache Spark IntroductionApache Spark Introduction
Apache Spark Introductionsudhakara st
 
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...Edureka!
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Databricks
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkSamy Dindane
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDatabricks
 
PySpark in practice slides
PySpark in practice slidesPySpark in practice slides
PySpark in practice slidesDat Tran
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsAnton Kirillov
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark Mostafa
 
Apache Knox setup and hive and hdfs Access using KNOX
Apache Knox setup and hive and hdfs Access using KNOXApache Knox setup and hive and hdfs Access using KNOX
Apache Knox setup and hive and hdfs Access using KNOXAbhishek Mallick
 
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale PlatformsBest Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale PlatformsDatabricks
 
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...Edureka!
 

Tendances (20)

Spark overview
Spark overviewSpark overview
Spark overview
 
Apache Spark Overview
Apache Spark OverviewApache Spark Overview
Apache Spark Overview
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeek
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)
 
Evaluation of TPC-H on Spark and Spark SQL in ALOJA
Evaluation of TPC-H on Spark and Spark SQL in ALOJAEvaluation of TPC-H on Spark and Spark SQL in ALOJA
Evaluation of TPC-H on Spark and Spark SQL in ALOJA
 
Introduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingIntroduction to Apache Spark Developer Training
Introduction to Apache Spark Developer Training
 
Apache Spark Introduction
Apache Spark IntroductionApache Spark Introduction
Apache Spark Introduction
 
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...
Pyspark Tutorial | Introduction to Apache Spark with Python | PySpark Trainin...
 
Spark architecture
Spark architectureSpark architecture
Spark architecture
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
 
Spark
SparkSpark
Spark
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache Spark
 
PySpark in practice slides
PySpark in practice slidesPySpark in practice slides
PySpark in practice slides
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & Internals
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark
 
Apache Knox setup and hive and hdfs Access using KNOX
Apache Knox setup and hive and hdfs Access using KNOXApache Knox setup and hive and hdfs Access using KNOX
Apache Knox setup and hive and hdfs Access using KNOX
 
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale PlatformsBest Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale Platforms
 
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...
Spark SQL Tutorial | Spark Tutorial for Beginners | Apache Spark Training | E...
 
Apache Spark 101
Apache Spark 101Apache Spark 101
Apache Spark 101
 

Similaire à Spark - An In-Memory Distributed Computing Engine.pptx

BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.xDr Hajji Hicham
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptxmajdoulineaitabdelal
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctionsMICHRAFY MUSTAFA
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptxboulonvert
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.pptIdriss22
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018Smile I.T is open
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Dr Hajji Hicham
 
Les technologies big data avec speech commentaries
Les technologies big data avec speech commentariesLes technologies big data avec speech commentaries
Les technologies big data avec speech commentariesRima Jamli Faidi
 

Similaire à Spark - An In-Memory Distributed Computing Engine.pptx (20)

BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 
Spark SQL principes et fonctions
Spark SQL principes et fonctionsSpark SQL principes et fonctions
Spark SQL principes et fonctions
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptx
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 
Introduction Apche Spark
Introduction Apche SparkIntroduction Apche Spark
Introduction Apche Spark
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017
 
Big data architectures
Big data architecturesBig data architectures
Big data architectures
 
Les technologies big data avec speech commentaries
Les technologies big data avec speech commentariesLes technologies big data avec speech commentaries
Les technologies big data avec speech commentaries
 

Spark - An In-Memory Distributed Computing Engine.pptx

  • 1. Présenté par : BENABDELKADER MAROUANE NABIL Anass Université Sultan Moulay Slimane École Supérieure de technologie – Fkih Ben Salah Licence Professionnelle Infrastructures, Traitement et Analyse de données Massives (BIG DATA) Année universitaire : 2023-2024 Spark - An In-Memory Distributed Computing Engine Encadré par : Prof A.Amine
  • 2. Plan I. Spark : Définition II. Batch Processing et Stream Processing III. Les composants de Spark IV. Architecture de Spark V. Les caractéristiques de Spark VI. Difference entre Spark et MapReduce VII. RDD ( Resilient Distributed Datasets ) VIII.RDD : Transformations et Actions IX. PySpark , Tp Pyspark 2
  • 3. I - Spark : ● Apache Spark est un Framework Big Data de traitement de données open source à grande échelle. Il est particulièrement adapté pour les très grandes volumétries de données et fonctionne de manière distribuée, sous forme de clusters. Son utilisation est principalement dédié aux applications du Machine Learning et des pipelines de données ETL (Extract, Transform, Load) . ● Spark Réalise des traitements par lots (Batch) ou à la volée (Streaming) ● Permet d’integrer tous les outils de BIG DATA (comme HDFS) ● Spark offre un traitement itératif et interactif 3
  • 4. Traitement par lots “Batch Processing” ● Le traitement par lots (en anglais, "batch processing") est une technique de traitement de données qui consiste à collecter, traiter et analyser un ensemble de données ou de tâches en une seule opération, généralement de manière planifiée et périodique. ● Contrairement au traitement en temps réel, où les données sont traitées au fur et à mesure de leur arrivée. ● le traitement par lots implique de rassembler un volume important de données avant de les traiter en une seule fois. 4
  • 5. Traitement par volée “ Stream Processing ” ● Le traitement par volée (ou « stream processing ») consiste à traiter les données en temps réel à mesure qu'elles arrivent, contrairement au traitement par lots qui traite les données en ensembles complets. Il est idéal pour les flux de données continus, permettant des réactions rapides, mais peut être plus complexe à mettre en œuvre. Apache Spark propose Spark Streaming pour cette fonctionnalité. ● Le traitement de streaming via micro-batch dans Spark Streaming offre un équilibre entre les temps de réponse rapides nécessaires dans le traitement en continu et l'efficacité du traitement par lots, le tout dans un environnement unifié. 5
  • 6. 6
  • 7. Les Composants de Spark: ● C’est le moteur d’exécution du spark, la base du framework ● Il fournit les fonctionnalités de base de Spark, telles que la distribution de données et la parallélisation des tâches, des fonctionnalités lectures/écritures de base. L’API RDD est implémentée (Resilient Distributed Datasets) sur Spark Core, qui est une collection logique de données partitionnées sur le cluster. 7 Spark Core :
  • 8. Les Composants de Spark: ● Spark SQL est une composante essentielle d'Apache Spark qui offre une interface SQL pour interagir avec des données structurées et semi- structurées, améliorant ainsi la performance du traitement de données. ● Il permet aux utilisateurs d'exécuter des requêtes SQL ou HQL sur une variété de sources de données, ce qui simplifie le traitement et l'analyse des données dans l'écosystème Spark. 8 Spark SQL :
  • 9. Les Composants de Spark: ● Spark Streaming est un composant d'Apache Spark qui permet d'analyser des flux de données en temps réel, idéal pour des applications nécessitant une réponse instantanée aux événements en cours. 9 Spark Streaming :
  • 10. Les Composants de Spark: ● MLlib, intégrée à Apache Spark, est une bibliothèque de machine learning robuste et scalable. Elle offre des algorithmes divers pour la classification, la régression, le clustering, et le filtrage collaboratif, optimisés pour le traitement de données massives. Grâce à son intégration étroite avec Spark, MLlib permet une analyse de données rapide et efficace, rendant le machine learning accessible et performant sur de grands ensembles de données. 10 MLlib (librairie Machine Learning) :
  • 11. Les Composants de Spark: ● GraphX est une bibliothèque de traitement de graphes intégrée à Apache Spark. Elle offre des outils pour construire, manipuler et analyser des graphes à grande échelle de manière efficace et distribuée. Il étend Spark RDD en introduisant le concept de Resilient Distributed Property Graph, un graphe où chaque nœud et chaque arête a des propriétés associées. Cette bibliothèque inclut des API pour la création de graphes, la modification de leurs structures, la réalisation de calculs sur les nœuds et les arêtes, et l'implémentation d'algorithmes graphiques 11 GraphX :
  • 12. Les Composants de Spark: ● Dans le contexte de Spark, les "packages" font généralement référence à des bibliothèques supplémentaires ou à des modules qui peuvent être ajoutés à l'installation de Spark pour étendre ses capacités. Ces packages peuvent inclure des connecteurs pour diverses sources de données, des bibliothèques pour le traitement avancé des données, des extensions pour le machine learning, etc. 12 Packages :
  • 13. Les Composants de Spark: ● Il faut bien comprendre que Spark n’est pas une base de données et ne stocke rien, il se base sur des systèmes de stockage comme Hadoop, AWS S3, Cassandra, MongoDB, etc. 13 Stockage
  • 14. Les Composants de Spark: ● Spark Prise en charge de plusieurs langages de programmation : Scala, Java, Python et R, ce qui facilite le développement d'applications Big Data dans le langage de programmation de votre choix. 14 langage de programmation
  • 15. Architecture Spark: Apache Spark adopte une architecture maître-esclave, dans laquelle le programme Driver agit en tant que maître, coordonnant et distribuant les tâches de traitement aux Workers, ou nœuds esclaves, chacun hébergeant des Executors pour exécuter ces tâches, avec le Cluster Manager supervisant la gestion des ressources du cluster. 15
  • 16. Architecture Spark: Driver Program: Le driver program est le point d'entrée de l'application Spark. Il contient le code de l'application Spark, y compris les transformations et les actions à effectuer sur les données. Le driver program communique avec le Cluster Manager pour allouer des ressources et coordonner les tâches. 16
  • 17. Architecture Spark: Cluster Manager: responsable de la gestion des ressources du cluster, telles que les nœuds de calcul. Spark prend en charge plusieurs gestionnaires de cluster, notamment Apache Mesos, Hadoop YARN, et son propre gestionnaire de cluster appelé Standalone. Le cluster manager alloue des ressources aux applications Spark et surveille leur exécution. 17
  • 18. Architecture Spark: Worker Node: un nœud (ou une machine) dans le cluster Spark qui est utilisé pour exécuter des parties des applications Spark. Chaque Worker Node est contrôlé par le Master Node (ou Driver Node) et exécute les tâches assignées. 18
  • 19. Architecture Spark: Executor: Un Executor dans Spark est un processus lancé sur les Worker Nodes qui exécute les tâches et stocke les données pour les applications Spark. Chaque Worker Node peut avoir un ou plusieurs Executors. Les Executors sont responsables de l'exécution des tâches assignées et du stockage de données en mémoire ou sur disque. Ils jouent un rôle clé dans la performance de traitement des données. 19
  • 20. Architecture Spark: Cache: Le cache dans un Worker Node d'Apache Spark fait référence à l'utilisation de la mémoire (RAM) pour stocker temporairement des données. Cela permet un accès rapide aux données fréquemment utilisées, ce qui peut améliorer significativement les performances de l'application. 20
  • 21. Architecture Spark: Task: Une Tache dans Apache Spark est une unité de travail individuelle qui est exécutée sur un Executor dans un Worker Node. Elle correspond à une opération spécifique sur une partition d'un RDD (Resilient Distributed Dataset) ou d'un DataFrame, comme le traitement, le filtrage ou l'agrégation des données. Les tasks sont les éléments de base du traitement parallèle dans Spark, permettant le traitement distribué des données sur plusieurs nœuds du cluster. 21
  • 23. Architecture Spark: Job: Dans Apache Spark, un "job" correspond à une série d'opérations de traitement de données initiées par une action Spark. Lorsqu'une action est appelée sur un RDD (Resilient Distributed Dataset) ou un DataFrame, Spark soumet un "job" au cluster pour traiter ces données. Un job est composé de plusieurs "stages". Un stage est un ensemble de tâches qui peuvent être exécutées en parallèle Spark organise les opérations en stages en fonction des opérations de transformation qui nécessitent, un stage est terminé lorsque toutes ses tâches sont terminées. 23
  • 24. Architecture Spark: 24 1. Driver Program: Le Driver exécute le code principal de l'application Spark et initialise le SparkContext, qui est le cœur de l'application et gère la configuration, l'établissement de la connexion au cluster, la distribution du code, et plus. 2. Resource Allocation by Spark Context: Le SparkContext communique avec le Cluster Manager pour demander des ressources pour exécuter l'application. Cela inclut la demande de lancement des Executors sur les Worker Nodes. 3. Resource Allocation by Cluster Manager: Le Cluster Manager attribue les ressources disponibles, en choisissant les Worker Nodes qui exécuteront les Executors pour le job en question. 4. Confirmation to Spark Context: Une fois que le Cluster Manager a alloué les ressources, il informe le SparkContext des détails des ressources allouées, permettant au Task Scheduler de savoir où les tâches peuvent être exécutées.
  • 25. Architecture Spark: 25 5. Job Creation: Lorsqu'une action est rencontrée dans le code, le SparkContext crée un job qui est une instance d'exécution des transformations RDD nécessaires pour obtenir le résultat de l'action. 6. DAG Scheduler: Le DAG Scheduler crée un plan d'exécution sous la forme d'un graphe acyclique dirigé qui illustre les RDDs, les transformations et les actions. Les stages sont formés ici, où chaque stage contient des tâches qui peuvent être exécutées en parallèle. 7. Task Scheduling: Le Task Scheduler ordonne les stages basés sur les dépendances et les contraintes de données. Il décide de l'ordre d'exécution des stages et prépare l'ordonnancement des tâches au sein de chaque stage. 8. Task Distribution: Le Task Scheduler envoie ensuite les tâches aux Executors sur les Worker Nodes pour être exécutées. Les Executors exécutent les tâches et retournent les résultats au Driver.
  • 26. Les principales caractéristiques de Spark ● In-Memory Processing : Spark stocke les données en mémoire, ce qui permet des performances plus rapides par rapport à d'autres systèmes de traitement de données qui utilisent un stockage sur disque. ● 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. ● Traitement distribué : Spark est conçu pour fonctionner sur un cluster de machines, permettant de traiter des volumes de données importants en parallèle. 26
  • 27. Les principales caractéristiques de Spark ● Bibliothèques intégrées : Spark intègre de nombreuses bibliothèques pour des tâches telles que le traitement de flux en temps réel (Spark Streaming), l'apprentissage automatique (MLlib), le traitement graphique (GraphX) et l'analyse SQL (Spark SQL). ● Intégration avec d'autres outils : Spark s'intègre facilement avec d'autres outils de l'écosystème Big Data, tels qu'Hadoop HDFS, Hive, et d'autres solutions de stockage et de traitement de données. 27
  • 28. Spark , MapReduce ● MapReduce et Spark sont deux frameworks de traitement distribué largement utilisés dans le domaine du traitement de données à grande échelle. ● Cependant, Spark offre plusieurs avantages par rapport à MapReduce et surmonte certaines de ses limites 28
  • 29. 29 vitesse Ecrit en Traitement de donnes Utilisation cashe
  • 30. 30
  • 31. 31 Spark utilise quoi Pour stockage dans Mémoire ? ● Spark utilise une structure de données fondamentale connue sous le nom de RDD (Resilient Distributed Datasets). ● Les RDD sont des collections distribuées d'éléments immuables, tolérants aux pannes et pouvant être traités en parallèle. ● Les RDD sont divisés en partitions et peuvent être exécutés sur différents nœuds de cluster. ● Spark conserve l’historique des opérations qui a permis de constituer un RDD, et la reprise sur panne s’appuie sur cet historique afin de reconstituer le RDD en cas de panne.
  • 32. Operations sur RDD ● Pour travailler avec les RDD, Spark propose deux types d'opérations : les transformations et les actions. ● Les transformations sont les fonctions qui sont appliquées sur un RDD existant pour en dériver un nouveau. Il prend RDD en entrée et produit un ou plusieurs RDDS en sortie. ● Les actions sont des opérations Spark RDD qui donnent des valeurs non RDD. Action renvoie une valeur au programme pilote après avoir exécuté un calcul sur l'ensemble de données. 32
  • 33. 33 Transformation Narrow et Wide chaque partition d’entrée ne contribuera qu’à une seule partition de sortie. des partitions d'entrée contribuer à de nombreuses partitions de sortie
  • 34. Exemple de Transformations dans Spark 34
  • 36. RDD ● Il existe trois façons de créer un RDD dans Spark : 1. Collections parallélisées : Les éléments de collection sont copiés dans un ensemble de données distribué qui peut être exploité en parallèle. 2. Ensembles de données externes : lorsque les données sont importées de l'extérieur de Spark, soit depuis local(Text,csv…), soit depuis hadoop(HDFS). 3. Transformations : Création d'un nouveau RDD à partir d'un existant. 36
  • 37. 37 Apache Spark-RDD ● Des transformations créent des RDD à partir d’une ou deux sources de données. ● S’il n’est pas marqué comme persistant, le RDD sera transitoire et ne sera pas conservé en mémoire après calcul ● Sinon, il est stocké en RAM, et disponible comme source de données pour d’autres transformations.
  • 38. 38 Exemple : Analyse de fichiers log ● On veut analyser le fichier journal (log) d’une application X dont un des modules (M) est suspect , et par beaucoup d’autres modules. ● On constate qu’un module M produit des résultats incorrects de temps en temps
  • 39. 39 Exemple : Analyse de fichiers log ● On construit donc un programme qui charge le log sous forme de collection, ne conserve que les messages produits par le module M , et analyse ensuite ces messages ● On peut analyser par utilisateur, par période, etc. ● Application de ca dans Spark parsuite
  • 40. 40 // Chargement de la collection log = load ("app.log") as (...) // Filtrage des messages du module M logM = filter log with log.message.contains ("Module M") // On rend logM persistant ! logM.persist();  Analyse à partir de logM // Filtrage par utilisateur logUtilisateur = filter logM with log.message.contains ("utilisateur U") // .. analyse du contenu de logProduit Code Spark : Exemple : Analyse de fichiers log
  • 41. 41 Reprise en panne : Exemple : Analyse de fichiers log
  • 42. Des RDD structurés ● Un RDD est une ”boîte” (typée) destinée à contenir n’importe quel document, sans aucun préjugé sur sa structure (ou son absence de structure) ● Spark propose (depuis la version 1.3, avec des améliorations en 1.6 puis 2.0) des RDD structurés dans lesquels les données sont sous forme tabulaire. ● Ces RDDs structurés sont nommés : ○ Dataset ○ Dataframe  Nous avons centré sur les RDDs (API bas niveau), mais il est aujourd’hui(presque) toujours préférable d’utiliser les API de haut niveau, Dataframes et Datasets  RDD Slow for non-JVM languages like Python  Ces structures, Datasets et Dataframes, sont assimilables à des tables relationnelles, ou à d’autres structures tabulaires (Pandas) 42
  • 43. DataFrame ● Il a été introduit pour la première fois dans la version 1.3 de Spark pour surmonter les limitations du Spark RDD. ● Les DataFrames : ○ sont des structures de données tabulaires, similaires à des tables de DB ○ sont conçus pour bénéficier des optimisations de requête de Spark. ○ sont étroitement intégrés avec Spark SQL, ce qui signifie que vous pouvez effectuer des opérations SQL directement sur les DataFrames 43
  • 44. 44
  • 45. Différence entre Spark et PySpark : ● PySpark est une bibliothèque Python qui fournit une interface pour Apache Spark, qui est un framework de traitement de données distribué et open source. ● La principale différence entre les deux est que Spark est écrit en Scala, tandis que PySpark permet aux développeurs d'utiliser Python pour interagir avec Spark. 45
  • 47. Sources  https://analyticsdata24.files.wordpress.com/2020/02/spark-the-definitive- guide40www.bigdatabugs.com_.pdf  https://medium.com/@lavishj77/spark-fundamentals-part-2-a2d1a78eff73  https://realpython.com/pyspark-intro/  https://meritis.fr/larchitecture-framework-spark/  https://sparkbyexamples.com/  https://www.youtube.com/watch?v=_C8kWso4ne4&t=3165s 47