0% ont trouvé ce document utile (0 vote)
71 vues44 pages

Introduction à Spark Streaming

Transféré par

oulachguarilyas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
71 vues44 pages

Introduction à Spark Streaming

Transféré par

oulachguarilyas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Big Data Analytics

Séance 5

Pr EL GHALI Btihal
Plan
• Introduction
• C’est quoi Apache Spark?
• Caractéristiques de Apache Spark
• Spark Vs Hadoop
• Spark Ecosystème
• Architecture et fonctionnement de Apache Spark
• Installation de Spark
• Notions de base du langage Scala
• Les APIs Spark: RDD, Dataframe, Dataset
• Spark SQL
• Spark ML
• Spark Streaming
2
Partie 7: Spark Streaming

3
Plan de la partie 7

• Qu’est ce que SPARK STREAMING?


• Comment fonctionne SPARK STREAMING?
• Principes de base de SPARK Streaming
§ Streaming Context
§ DStream
§ Caching
§ Accumulators
§ Broadcast Variables
§ Checkpoints

4
Qu’est ce que SPARK STREAMING?

§ Spark Streaming est une extension de l'API Spark qui permet le traitement de flux
de données de la manière suivante:

ü Évolutif: Spark Streaming peut facilement évoluer vers des centaines de


nœuds.
ü haut débit et rapide: il atteint une faible latence.
ü tolérant aux pannes: Spark a la capacité de continuer le streaming
efficacement aprés défaillances.

5
Comment fonctionne SPARK STREAMING?

Les données peuvent provenir de nombreuses sources telles que:


• Kafka,
• Flume,
• Kinesis,
• ou des sockets TCP.

6
Comment fonctionne SPARK STREAMING?

• Ensuite, les données peuvent être traitées en utilisant des algorithmes


complexes ou des fonctions de haut niveau telles que:
Ø map,
Ø reduce,
Ø Join,
Ø …

• Enfin, les données traitées peuvent être transférées vers des systèmes de
fichiers, des bases de données et des tableaux de bord dynamiques.

7
Comment fonctionne SPARK STREAMING?

• Vous pouvez appliquer les algorithmes d’apprentissage automatique et des


traitements des graphs de Spark aux flux de données.

8
Comment fonctionne SPARK STREAMING?

• En interne, cela fonctionne comme suit:


Ø Spark Streaming reçoit des flux de données d'entrée en direct et divise les
données en lots,
Ø qui sont ensuite traités par le moteur Spark pour générer le flux final de
résultats par lots.

L’unite fondamentale des


stream est le Dstream, qui est 1 Batch (lot) = 1 RDD.
à la base une series de RDDs.
9
Les notions de base de SPARK Streaming

SPARK Streaming
Fundamentals
ü Streaming Context
ü DStream
ü Caching
ü Accumulators,
ü Broadcast Variables
ü Checkpoints

10
SPARK CONTEXT

§ Un objet StreamingContext peut être créé à partir d'un objet SparkContext.

§ SparkContext représente la connexion à un cluster Spark et peut être utilisé pour


créer :
ü Des RDDs,
ü des accumulateurs,
ü et des variables de diffusion.

11
DSTREAM

§ Le flux discret (DStream) est l'abstraction de base fournie par Spark. C'est un flux
continu de données.
§ En interne, un DStream est représenté par une série continue de RDD et chaque
RDD contient des données provenant d'un certain intervalle.
§ Chaque RDD représente les données reçu dans un intervalle de lot => 1 RDD est
égal à 1 Batch.
§ Toute opération sur un DStream s’applique à tous les RDD sous-jacents.
Ø Un flatmap sera appliqué à tous les RDD du Dstream.
RDD RDD RDD RDD

12
DSTREAM

Input Dstream
§ Les entrées des DStreams sont des flux de données d'entrée reçues de sources en
continu.

13
DSTREAM

Transformations sur Dstream


§ Toute opération appliquée sur un DStream se traduit par des opérations sur les RDD
sous-jacents.
§ Les transformations permettent aux données du flux DStream d'entrée d'être
modifiées de la même manière que les RDD.
§ De nombreuses transformations peuvent être appliquées à un DSTREAM.

14
DSTREAM

Dstream de sortie
§ Les opérations de sortie permettent de transférer les données de DStream vers des
systèmes externes tels que des bases de données ou des systèmes de fichiers.

15
CACHING

§ Les DStreams permettent aux développeurs de mettre en cache / conserver les


données du flux en mémoire.

§ Ceci est utile si les données dans le DStream seront traitées plusieurs fois.

§ Cela peut être fait en utilisant la méthode persist() sur un DStream.

16
Accumulateur et Variable de diffusion

üAccumulateurs
§ Les accumulateurs peuvent être utilisés pour implémenter des compteurs ou des
sommes, et peuvent être suivi sur l’UI de Spark Streaming.

üVariables de diffusion
§ Variables diffusées sur chaque machine.
§ Les variables de diffusion permettent au programmeur de conserver une variable
en lecture seule en cache sur chaque machine.

17
Accumulateur et Variable de diffusion

üVariables de diffusion
§ C’est utile lorsqu’on doit appliquer des transformations larges (utilisation du
Shuffling).

18
Points de contrôle

§ Les points de contrôle sont similaires aux points de contrôle dans les jeux.

§ Une application de streaming doit fonctionner 24 heures sur 24, 7 jours sur 7 et
doit donc être résiliente face aux défaillances non liées à la logique de l'application
(défaillances du système, pannes de la JVM, etc.).

§ Pour que cela soit possible, Spark Streaming doit contrôler suffisamment
d’informations sur un système de stockage à tolérance de pannes lui permettant de
remédier aux défaillances.

19
Points de contrôle

§ Points de contrôle des métadonnées: Sauvegarde des informations définissant le


calcul de streaming (metadata) dans un stockage tolérant aux pannes comme
HDFS. Par exemple: App. configuration, lots incomplets (démarrés mais pas
encore enregistrés), pour une récupération des pannes du driver de l’application.

§ Points de contrôle des données: Sauvegarde des RDD générés dans un stockage
fiable.

20
Partie 8: SPARK STRUCTURED
STREAMING - SSS

21
Définition

§ Le streaming structuré est un moteur de traitement de flux évolutif et tolérant aux


pannes basé sur le moteur Spark SQL.

§ Vous pouvez faire votre calcul de streaming de la même manière que vous
exprimeriez un calcul sur des données statiques.
Ø Nous utilisons la même API sur les données streaming ou batch.

22
Définition

§ La principale différence entre SSS et SS-DSTREAM est que SSS est basé sur des
dataframes (Dataset<Row>) tandis que DSTREAM est basé sur les RDD.

§ Vous pouvez utiliser l'API DataFrame dans Scala, Java, Python ou R.

23
Différence entre SSS et SS-DStream

[Link]

24
SPARK STRUCTURED STREAMING

§ En interne, par défaut, les requêtes de streaming structuré sont traitées à l'aide d'un
moteur de traitement par micro-lots,

§ Cela traite les flux de données comme une série de petits lots, ce qui permet
d'obtenir des latences aussi faibles que 100 millisecondes et des garanties de
tolérance aux pannes de type exactly-once.

25
Modes de tolérance aux pannes

§ at-most-once delivery (0 or 1): le message est délivré zéro ou une fois; les
messages peuvent être perdus.

§ at-least-once delivery (1 or more): le message est délivré au moins une fois,


signifie que pour chaque message remis, multiples tentatives sont faites pour le
délivrer, de telle sorte qu'au moins une réussisse; encore une fois, cela signifie que
les messages peuvent être dupliqués mais pas perdus.

§ exactly-once delivery (1): livraison en une seule fois, signifie que pour chaque
message remis, une seule remise est effectuée au destinataire; le message ne peut
être ni perdu ni dupliqué.

26
Mode de traitement

§ Cependant, depuis Spark 2.3, ils ont introduit un nouveau mode de traitement à
faible latence appelé continous processing, qui peut atteindre des latences de bout
en bout aussi faibles qu’une milliseconde avec at-least-once delivery (1 or more).

§ Vous pouvez choisir le mode en fonction des besoins de votre application.

27
Modèle de programmation SSS

§ Chaque élément de données qui arrive est comme une nouvelle ligne ajoutée à la
table d'entrée.

28
Exemple SSS

§ L’exemple représente le code d'une application de Streaming avec Spark.

§ C'est une application qui va calculer le nombre d’occurrences des mots en mode
streaming.

§ Nous allons envoyer des phrases au port 9999 et l'application Spark écoutera le
même port et fera le décompte des mots.

29
Exemple SSS

30
Exemple SSS

31
Modèle de programmation SSS

§ Chaque intervalle de déclenchement (disons, chaque seconde), de nouvelles lignes


sont ajoutées à la table d'entrée, qui met finalement à jour la table de résultats.

32
Modèle de programmation SSS

§ Une requête sur l'entrée générera le «Tableau des résultats».

33
Modèle de programmation SSS

§ Chaque fois que la table de résultats est mise à jour, nous voudrions sauvegarder
les lignes de résultats modifiées dans des stockages externe (HDFS, HBASE,
HIVE….)

34
Modèle de programmation SSS

§ La «sortie» est définie comme ce qui est écrit sur le stockage externe.

35
Modèle de programmation SSS

§ La sortie peut être définie en différents modes:


ü Mode complet (Complete)
ü Mode d'ajout (Append)
ü Mode de mise à jour (Update)

36
Modèle de programmation SSS

ü Mode complet (Complete) : L'ensemble du tableau des résultats mis à jour sera
écrit sur le stockage externe.

Cat 1 Cat 2 Cat 2


Dog 3 Dog 3 Dog 4
Owl 1 Owl 2

37
Modèle de programmation SSS

ü Mode d'ajout (Append) : Seules les nouvelles lignes ajoutées dans le tableau des
résultats depuis le dernier déclencheur seront écrites sur le stockage externe.

Cat 1 Cat 1 Dog 1


Dog 3 Owl 1 Owl 1

38
Modèle de programmation SSS

ü Mode de mise à jour (Update) : Seules les lignes qui ont été mises à jour dans le
tableau de résultats depuis le dernier déclencheur seront écrites sur le stockage
externe (disponible depuis Spark 2.1.1).

Cat 1 Cat 2 Dog 4


Dog 3 Owl 1 Owl 2

39
Modèle de programmation SSS

ü Notez que le streaming structuré ne matérialise pas la totalité de la table.

ü Il lit les dernières données disponibles de la source de données en continu, les


traite de manière incrémentale pour mettre à jour le résultat, puis supprime les
données source.

ü Il ne conserve que les données d'état intermédiaire minimales nécessaires pour


mettre à jour le résultat.

40
Gestion de l'heure de l'événement et des données tardives

ü L’heure de l'événement (Event-time) est incorporée dans les données.

ü Pour de nombreuses applications, vous pouvez utiliser l’heure d'événement.


Ø Par exemple, si vous souhaitez obtenir le nombre d'événements générés par les
appareils IoT chaque minute.

ü Cela permet aux agrégations basées sur des fenêtres de temps (par exemple, le
nombre d'événements chaque minute/heure) d'être juste un type spécial de
regroupement et d'agrégation sur la colonne Event-time.

41
Gestion de l'heure de l'événement et des données tardives

ü De plus, ce modèle gère naturellement les données qui sont arrivées plus tard que
prévu en fonction de leur heure d'événement.

ü Étant donné que Spark met à jour la table des résultats, il a un contrôle total sur la
mise à jour des anciens agrégats en cas de données en retard.

ü Depuis Spark 2.1, il existe un support pour watermarking qui permet à l'utilisateur
de spécifier le seuil de données en retard.

42
TP5: SPARK STRUCTURED STREAMING
en utilisant l’API DataFrames de Scala

43
Documentation : SPARK Structured Streaming

• [Link]
[Link]

• [Link]

• [Link]
• [Link]
[Link]#structured-streaming-scala

• [Link]
spark-structured-streaming-and-dstreams

44

Vous aimerez peut-être aussi