Vous êtes sur la page 1sur 24

Ecole Supérieure d’ingénieurs de Gafsa

Framework & technologies Big


Data
Chapitre4: Programmation avec les
RDD et Spark Streaming

Rim Afdhal

Niveau: 3éme année Informatique

2022/2023
1. Introduction

▪ 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é d’utilisation.

▪ 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 vous permet d’écrire des applications en Java,
Scala ou Python

2
1. Introduction

▪ De plus, il est possible de l’utiliser de façon interactive pour


requêter les données depuis un shell.

▪ 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.

3
1. Introduction

L’architecture de Spark comprend les trois composants principaux


suivants :

•Le stockage des données

•L’API: permet aux développeurs de créer des applications Spark


en utilisant une API standard. L’API existe en Scala, Java et
Python.

•Le Framework de gestion des ressources: Spark peut être


déployé comme un serveur autonome ou sur un framework de
traitements distribués.

4
2. RDD

RDD: Resilient Distributed Datasets

▪ un RDD : une table dans une base de données. Celui-ci peut porter
tout type de données et stockée par Spark sur différentes partitions.
▪ Les RDD permettent de réarranger les calculs et d’optimiser 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 d’un
RDD, il faut y appliquer une transformation, qui retournera un
nouveau RDD, l’original restera inchangé.

5
2. RDD

Les RDD supportent deux types d’opérations :


•Les transformations
•Les actions

• Les transformations : les transformations ne retournent pas de


valeur, elles retournent un nouveau RDD. Rien n’est évalué lorsque
l’on 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

6
2. RDD

Les actions : les actions retournent une nouvelle valeur. Au


moment où une fonction d’action 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

7
2. RDD

Les variables partagées:

Spark fournit deux types de variables partagées pour permettre


d’exécuter de façon efficace les programmes Spark sur un cluster :

▪ Broadcast
▪ Accumulators.

8
2. RDD

Les variables Broadcast :

Ces variables permettent de maintenir des variables en cache, en


lecture seule, sur chaque machine, plutôt que d’avoir à les envoyer
avec les tâches. Elles peuvent être utilisées pour mettre à la
disposition des nœuds du cluster des copies de jeux de données
volumineux de façon plus efficace.

9
2. RDD

Les accumulateurs :

▪ les accumulateurs peuvent être ajoutés lors de l’utilisation


d’opérations associatives ; leur support est donc efficace dans le
cadre de traitements parallèles. Ils peuvent être utilisés pour
implémenter des compteurs ou des sommes.

Les tâches exécutées sur le cluster peuvent ajouter un


accumulateur avec la méthode add. Cependant, ils ne peuvent pas
lire sa valeur. Seul le programme pilote peut lire la valeur d’un
accumulateur.

10
3. Présentation de Spark Streaming

▪ Un flux de données (ou data stream) est une séquence non


bornée de données qui arrive de manière continue. Le streaming
divise le flux continu des données en unités discrètes pour les
traiter.

▪ Spark Streaming a été ajouté à Apache Spark en 2013, comme


extension de l'API de base de Spark

▪ Le streaming consiste à diviser une ressource que vous souhaitez


recevoir sur un réseau en petits morceaux, puis à la traiter petit à
petit.

11
3. Présentation de Spark Streaming

❖ En interne, il fonctionne comme suit: Spark Streaming reçoit


des données en streaming et les divise en micro-batches, qui
sont ensuite calculés par le moteur de spark pour générer le flux
final de résultats.
❖ Contrairement au modèle d'opérateur continu, où le traitement est
statiquement alloué à un noeud, les tâches de Spark sont affectées
aux Workers de façon dynamique, sur la base de la localité des
données et des ressources disponibles. Ceci permet une meilleure
répartition des charges et une récupération plus rapide en cas de
faute.
❖ Chaque lot de données est un RDD dans Spark. Ceci permet aux
données en streaming d'être traitées grâce à n'importe quel code
ou bibliothèque Spark. 12
3. Présentation de Spark Streaming

Spark Streaming divise le flux de données en lots appelés DStream


(Discretized Stream), qui représentent fondamentalement une
séquence de RDDs.

13
3. Présentation de Spark Streaming

▪ Spark DStream est l'abstraction de base de Spark Streaming. C'est


un flux continu de données, qui reçoit en entrée des données à
partir de sources diverses. Il peut également être un flux de
données généré à partir d'un flux en entrée. DStream est un flux
continu de RDD. Chaque RDD contient des données sur un
intervalle particulier.

▪ Chaque opération sur un DStream s'applique à tous les RDD


sous-jacents. DStream offre ainsi au développeur une API de haut
niveau pour faciliter le travail sur les données en streaming.

14
3. Présentation de Spark Streaming

▪ Les opérations sur le DStreams peuvent être:

•Transformations: qui peuvent être:


• Sans état (Stateless): ce sont des transformations où le
traitement sur un lot n'a pas de dépendance avec les lots
précédents. Les transformations sans état sont de simples
transformations RDD. Elles s'appliquent sur chaque batch (et
sur chaque RDD) du DStream. Ceci inclut des transformations
classiques telles que map, filter, reduceByKey, etc.

15
3. Présentation de Spark Streaming

• Avec état (Stateful): ces transformations utilisent des données ou


des résultats intermédiaires provenant des batches précédents.
Les transformations avec état sont des opérations sur les
DStreams qui suivent l'évolution des données à travers le temps.
Les deux types de transformations avec état sont les windowed
operations, qui opèrent sur une fenêtre glissante de périodes de
temps, et la updateStateByKey, utilisée pour suivre l'état à
travers les évènements de chaque clé.

•Output Operations: elles sont réalisées pour renvoyer un résultat


après les transformations. C'est l'équivalent des actions pour les
RDDs. On peut citer: print, save, etc.
16
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

Les principaux composants de l'architecture YARN comprennent :


•Client
•Gestionnaire de ressources : responsable de l'affectation et de la
gestion des ressources entre toutes les applications. Chaque fois qu'il
reçoit une demande de traitement, il la transmet au gestionnaire de nœud
correspondant et alloue des ressources pour l'achèvement de la demande
en conséquence. Il a deux composantes principales :
• Planificateur
• Gestionnaire d'applications
•Gestionnaire de nœuds
•Application Master
• Conteneur : il s'agit d'un ensemble de ressources physiques telles que
la RAM, les cœurs de processeur et le disque sur un seul nœud.
17
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

18
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone
1.Le client soumet une demande
2.Le gestionnaire de ressources alloue un conteneur pour démarrer le
gestionnaire d'applications
3.Le gestionnaire d'applications s'enregistre auprès du gestionnaire
de ressources
4.Le gestionnaire d'applications négocie les conteneurs à partir du
gestionnaire de ressources
5.Le gestionnaire d'applications indique au gestionnaire de nœuds de
lancer des conteneurs
6.Le code de l'application est exécuté dans le conteneur
7.Le client contacte le gestionnaire de ressources/le gestionnaire
d'applications pour surveiller l'état de l'application
8.Une fois le traitement terminé, le gestionnaire d'applications se
désenregistre auprès du gestionnaire de ressources
19
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

20
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

Maître de Mésos
Le maître Mesos est le cœur du cluster. Il héberge l'interface utilisateur
principale qui fournit des informations sur les ressources disponibles dans le
cluster. Le maître est une source centrale de toutes les tâches en cours
d'exécution ; il stocke en mémoire toutes les données liées à la tâche.

Agent Mesos
L'agent Mesos détient et gère le conteneur qui héberge l'exécuteur (tout
s'exécute à l'intérieur d'un conteneur dans Mesos). Il gère la communication
entre l'exécuteur local et le maître Mesos, jouant le rôle d'intermédiaire entre
eux. L'agent Mesos publie les informations relatives à l'hôte sur lequel ils
s'exécutent, y compris les données sur les tâches et les exécuteurs en cours
d'exécution, les ressources disponibles de l'hôte et d'autres métadonnées. Il
garantit la livraison des mises à jour de statut des tâches aux planificateurs.

21
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

Cadre Mesos
Mesos Framework comporte deux parties : le planificateur et
l'exécuteur. Le planificateur s'enregistre dans le maître Mesos et
obtient à son tour l'ID de framework unique. Il est de la responsabilité
de l'ordonnanceur de lancer les tâches lorsque le besoin en ressources
et les contraintes correspondent à l'offre reçue du maître Mesos. Il est
également responsable du traitement des échecs et des erreurs des
tâches. L'exécuteur exécute la tâche lancée par le planificateur et
notifie l'état de chaque tâche.

22
4. Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

Standalone Master est le gestionnaire de ressources et Standalone


Worker est le travailleur dans le Spark Standalone Cluster.
En mode cluster autonome, il n'y a qu'un seul exécuteur pour
exécuter les tâches sur chaque nœud de travail.
Un client établit une connexion avec le maître autonome, demande
des ressources et démarre le processus d'exécution sur le nœud de
travail.
Ici, le client est le maître de l'application et il demande les
ressources au gestionnaire de ressources. Dans ce gestionnaire de
cluster, nous avons une interface utilisateur Web pour afficher tous
les clusters et les statistiques de travail.

23
Les différentes architectures: Yarn Hadoop, Mesos,
Standalone

24

Vous aimerez peut-être aussi