Didacticiel Apache Spark Streaming pour débutants : fonctionnement, architecture et fonctionnalités
Publié: 2020-02-27Nous vivons actuellement dans un monde où une grande quantité de données est générée chaque seconde à un rythme rapide. Ces données peuvent fournir des résultats significatifs et utiles si elles sont analysées avec précision. Il peut également offrir des solutions à de nombreuses industries au bon moment.
Ceux-ci sont très utiles dans les secteurs tels que les services de voyage, la vente au détail, les médias, les finances et les soins de santé. De nombreuses autres grandes entreprises ont adopté l'analyse de données telles que le suivi de l'interaction des clients avec différents types de produits effectués par Amazon sur sa plate-forme ou les téléspectateurs recevant des recommandations personnalisées en temps réel, fournies par Netflix.
Il peut être utilisé par toute entreprise qui utilise une grande quantité de données, et ils peuvent l'analyser à leur avantage pour améliorer le processus global de leur entreprise et pour augmenter la satisfaction des clients et les expériences des utilisateurs. De meilleures expériences utilisateur et la satisfaction des clients offrent des avantages à l'organisation, à long terme, pour développer l'activité et réaliser des bénéfices.
Table des matières
Qu'est-ce que la diffusion en continu ?
Le streaming de données est une méthode dans laquelle les informations sont transférées sous forme de flux continu et régulier. Alors qu'Internet se développe, les technologies de streaming se multiplient également.
Qu'est-ce que Spark Streaming ?
Lorsque des données arrivent en continu dans une séquence non liée, on parle alors de flux de données. Les données d'entrée circulent régulièrement et sont divisées par flux. Un traitement ultérieur des données est effectué après leur division en unités discrètes. L'analyse des données et le traitement des données à faible latence est appelé traitement de flux.
En 2013, Apache Spark a été ajouté avec Spark Streaming. Il existe de nombreuses sources à partir desquelles l'ingestion de données peut se produire, telles que TCP Sockets, Amazon Kinesis, Apache Flume et Kafka. À l'aide d'algorithmes sophistiqués, le traitement des données est effectué. Une fonction de haut niveau telle que window, join, reduce et map est utilisée pour exprimer le traitement. Des tableaux de bord en direct, des bases de données et des systèmes de fichiers sont utilisés pour transférer les données traitées vers des systèmes de fichiers.

Fonctionnement du flux
Voici le fonctionnement interne. Le streaming Spark divise les flux de données d'entrée en direct en lots. Spark Engine est utilisé pour traiter ces lots afin de générer les lots de flux finaux en conséquence.
Les données du flux sont divisées en petits lots et sont représentées par Apache Spark Discretized Stream (Spark DStream). Spark RDDs est utilisé pour créer des DStreams, et c'est l'abstraction de données de base de Spark. Tous les composants d'Apache Spark tels que Spark SQL et Spark MLib peuvent être facilement intégrés à Spark Streaming de manière transparente.
Spark Streaming aide à mettre à l'échelle les flux de données en direct. C'est l'une des extensions de l'API principale de Spark. Il permet également le traitement de flux tolérants aux pannes et à haut débit. L'utilisation de Spark Streaming effectue un traitement et une diffusion en temps réel des données en direct. Les principales grandes entreprises du monde utilisent le service de Spark Streaming, telles que Pinterest, Netflix et Uber.
Spark Streaming fournit également une analyse des données en temps réel. Le traitement en direct et rapide des données est effectué sur la plate-forme unique de Spark Streaming.
Lire aussi Architecture Apache Spark
Pourquoi Spark Streaming ?
Spark Streaming peut être utilisé pour diffuser des données en temps réel à partir de différentes sources, telles que Facebook, la bourse et les systèmes géographiques, et effectuer des analyses puissantes pour encourager les entreprises.
Il y a cinq aspects importants de Spark Streaming qui le rendent si unique, et ce sont :
1. Intégration
Les bibliothèques avancées telles que le traitement de graphes, l'apprentissage automatique, SQL peuvent être facilement intégrées.
2. Combinaison
Les données qui sont diffusées peuvent être effectuées en conjonction avec des requêtes interactives et également des ensembles de données statiques.
3. Équilibrage de charge
Spark Streaming a un parfait équilibrage de charge, ce qui le rend très spécial.
4. Utilisation des ressources
Spark Streaming utilise la ressource disponible de manière très optimale.
5. Récupération des retardataires et des échecs
Spark Streaming peut rapidement récupérer de tout type de panne ou de retard.
Besoin de streaming dans Apache Spark
Le modèle d'opérateur continu est utilisé lors de la conception du système de traitement des flux traditionnellement pour traiter les données. Le fonctionnement du système est le suivant :
- Les sources de données sont utilisées pour diffuser les données. Les différents types de sources de données sont les appareils IoT, les données de télémétrie du système, les journaux en direct et bien d'autres. Ces données de streaming sont ingérées dans des systèmes d'ingestion de données tels qu'Amazon Kinesis, Apache Kafka et bien d'autres.
- Sur un cluster, un traitement parallèle est effectué sur les données.
- Des systèmes en aval tels que Kafka, Cassandra, HBase sont utilisés pour transmettre les résultats.
Un ensemble de nœuds de travail exécute des opérateurs continus. Le traitement des enregistrements de données diffusées en continu est effectué un à la fois. Les documents sont ensuite transmis aux opérateurs suivants dans le pipeline.
Les opérateurs sources sont habitués à recevoir des données des systèmes d'ingestion. Les opérateurs de puits sont habitués à fournir une sortie au système en aval.
Certains opérateurs sont continus. Il s'agit d'un modèle naturel et simple. En ce qui concerne l'analyse de données complexes en temps réel, qui se fait à grande échelle, l'architecture traditionnelle est confrontée à certains défis dans le monde moderne, et ce sont :
Récupération rapide des pannes
Dans les systèmes d'aujourd'hui, les pannes sont rapidement accompagnées et compensées par la récupération des informations perdues en calculant les informations manquantes dans les nœuds parallèles. Ainsi, cela rend la récupération encore plus rapide par rapport aux systèmes traditionnels.
Équilibreur de charge
L'équilibreur de charge permet d'allouer les ressources et les données entre les nœuds de manière plus efficace afin qu'aucune ressource n'attende ou ne fasse rien, mais que les données soient réparties uniformément sur les nœuds.
Unification des charges de travail interactives, par lots et en continu
On peut également interagir avec les données de diffusion en effectuant des requêtes sur les données de diffusion. Il peut également être combiné avec des ensembles de données statiques. On ne peut pas faire de requêtes ad hoc en utilisant de nouveaux opérateurs car il n'est pas conçu pour les opérateurs continus. Les requêtes interactives, en continu et par lots peuvent être combinées en utilisant un seul moteur.
Requêtes et analyses SQL avec ML
Le développement de systèmes avec une commande de base de données commune a facilité la vie des développeurs pour travailler en collaboration avec d'autres systèmes. La communauté accepte largement les requêtes SQL. Où le système fournit des modules et des bibliothèques pour l'apprentissage automatique qui peuvent être utilisés à des fins analytiques avancées.
Présentation de Spark Streaming
Spark Streaming utilise un ensemble de RDD qui est utilisé pour traiter les données en temps réel. Par conséquent, Spark Streaming est généralement utilisé pour traiter le flux de données en temps réel. Spark Streaming fournit un traitement tolérant aux pannes et à haut débit des flux de données en direct. Il s'agit d'une fonctionnalité supplémentaire fournie avec l'API Spark principale.
Fonctionnalités de diffusion Spark
- Business Analysis : Avec l'utilisation de Spark Streaming, on peut également apprendre le comportement de l'audience. Ces apprentissages peuvent ensuite être utilisés dans la prise de décision des entreprises.
- Intégration : le traitement en temps réel et par lots est intégré à Spark
- Tolérance aux pannes - La capacité unique du Spark est qu'il peut récupérer efficacement de la panne.
- Vitesse : une faible latence est obtenue grâce à Spark
- Mise à l' échelle : les nœuds peuvent être facilement mis à l'échelle jusqu'à des centaines par Spark.
Fondamentaux de Spark Streaming
1. Contexte de diffusion
Dans Spark, le flux de données est consommé et géré par Streaming Context. Il crée un objet de récepteur qui est produit en enregistrant un flux d'entrée. Ainsi, c'est la fonctionnalité principale de Spark qui devient un point d'entrée critique du système car elle fournit de nombreux contextes qui fournissent un flux de travail par défaut pour différentes sources comme Akka Actor, Twitter et ZeroMQ.

Lire : Rôle d'Apache Spark dans le Big Data et pourquoi c'est unique
Un objet de contexte spark représente la connexion avec un cluster spark. Lorsque l'objet Spark Streaming est créé par un objet StreamingContext, les accumulateurs, les RDD et les variables de diffusion peuvent également être créés en tant qu'objet SparkContex.
2. Points de contrôle, variables de diffusion et accumulateurs
Points de contrôle
Checkpoint fonctionne de la même manière que Checkpoints qui stocke l'état des systèmes de la même manière que dans les jeux. Où, dans ce cas, les points de contrôle aident à réduire la perte de ressources et à rendre le système plus résistant aux pannes du système. Une méthodologie de point de contrôle est un meilleur moyen de suivre et de sauvegarder les états du système afin qu'au moment de la récupération, il puisse être facilement retiré.
Variables de diffusion
Au lieu de fournir la copie complète des tâches aux nœuds du réseau, il attrape toujours une variable en lecture seule qui est chargée de reconnaître les nœuds de différentes tâches présentes et ainsi de réduire les coûts de transfert et de calcul par nœuds individuels. Ainsi, il peut fournir un ensemble d'entrées important plus efficacement. Il utilise également des algorithmes avancés pour distribuer la variable de diffusion aux différents nœuds du réseau ; ainsi, le coût de communication est réduit.
Accumulateurs
Les accumulateurs sont des variables qui peuvent être personnalisées à différentes fins. Mais il existe aussi des Accumulateurs déjà définis comme les Accumulateurs de compteur et de somme. Il existe également des accumulateurs de suivi qui gardent une trace de chaque nœud, et certaines fonctionnalités supplémentaires peuvent également y être ajoutées. Les accumulateurs numériques prennent en charge de nombreuses fonctions numériques qui sont également prises en charge par Spark. Un accumulateur personnalisé peut également être créé à la demande de l'utilisateur.
DStream
DStream signifie flux discrétisé. Spark Streaming offre l'abstraction nécessaire, appelée Discretized Stream (DStream). DStream est une donnée qui coule en continu. D'une source de données, DStream est reçu. Il peut également être obtenu à partir d'un flux de données traitées. La transformation du flux d'entrée génère un flux de données traitées.
Après un intervalle spécifié, les données sont contenues dans un RDD. Une série sans fin de RDD représente un DStream.
Mise en cache
Les développeurs peuvent utiliser DStream pour mettre en cache les données du flux en mémoire. Ceci est utile si les données sont calculées plusieurs fois dans le DStream. Cela peut être réalisé en utilisant la méthode persist () sur un DStream.
La duplication des données est effectuée pour garantir la sécurité d'avoir un système résilient qui peut résister et échouer dans le système, ayant ainsi la capacité de tolérer les défauts du système (tels que Kafka, Sockets, Flume, etc.)
Avantages et architecture de Spark Streaming
Le traitement d'un flux de données à la fois peut parfois être fastidieux ; par conséquent, Spark Streaming discrétise les données en petits sous-lots facilement gérables. En effet, les travailleurs Spark obtiennent des tampons de données en parallèle acceptés par le récepteur Spark Streaming. Et par conséquent, l'ensemble du système exécute les lots en parallèle, puis accumule les résultats finaux. Ensuite, ces tâches courtes sont traitées par lots par le moteur Spark et les résultats sont fournis à d'autres systèmes.
Dans l'architecture Spark Streaming, le calcul n'est pas alloué et chargé statiquement sur un nœud, mais en fonction de la localité des données et de la disponibilité des ressources. Il réduit ainsi le temps de chargement par rapport aux systèmes traditionnels précédents. D'où l'utilisation du principe de localité des données, il est également plus facile pour la détection des défauts et leur récupération.
Les nœuds de données dans Spark sont généralement représentés par RDD qui est Resilient Distribution Dataset.
Objectifs de Spark Streaming
Voici les objectifs atteints par l'architecture Spark.
1. Équilibrage de charge dynamique
C'est l'une des fonctionnalités essentielles de Spark Streaming où les flux de données sont alloués dynamiquement par l'équilibreur de charge, qui est responsable des données d'allocation et du calcul des ressources à l'aide de règles spécifiques qui y sont définies. L'objectif principal de l'équilibrage de charge est d'équilibrer efficacement la charge de travail entre les travailleurs et de tout mettre en parallèle de sorte qu'il n'y ait pas de gaspillage des ressources disponibles. Et également responsable de l'allocation dynamique des ressources aux nœuds de travail du système.
2. Échec et récupération
Comme dans le système traditionnel, lorsqu'il se produit un échec de fonctionnement, l'ensemble du système doit recalculer cette partie pour récupérer les informations perdues. Mais le problème survient lorsqu'un nœud gère toute cette récupération et oblige tout le système à attendre qu'il soit terminé. Alors que dans Spark, les informations perdues sont calculées par d'autres nœuds libres et ramènent le système à suivre sans aucune attente supplémentaire comme dans les méthodes traditionnelles.
De plus, la tâche échouée est répartie uniformément sur tous les nœuds du système pour la recalculer et la ramener de l'échec plus rapidement que la méthode traditionnelle.
3. Lots et requête interactive
Un ensemble de RDD dans Spark est appelé DStream dans Spark qui fournit une relation entre les charges de travail de streaming et les lots. Ces lots sont stockés dans la mémoire de Spark, ce qui offre un moyen efficace d'interroger les données qui y sont présentes.
La meilleure partie de Spark est qu'il comprend une grande variété de bibliothèques qui peuvent être utilisées lorsque requis par le système Spark. Peu de noms de bibliothèques sont MLlib pour l'apprentissage automatique, SQL pour la requête de données, GraphX et Data Frame, tandis que Dataframe et les questions peuvent être converties en instructions SQL équivalentes par DStreams.
4. Performances
Comme le système d'étincelles utilise des distributions parallèles de la tâche qui améliorent sa capacité de débit et tirent ainsi parti du moteur d'étincelles capable d'atteindre une faible latence aussi faible que quelques 100 millisecondes.
Comment fonctionne Spark Streaming ?
Les données du flux sont divisées en petits lots appelés DStreams dans Spark Streaming. Il s'agit d'une séquence de RDD en interne. Les API Spark sont utilisées par RDDS pour traiter les données et les envois sont renvoyés en conséquence. L'API de Spark Streaming est disponible en Python, Java et Scala. De nombreuses fonctionnalités manquent dans l'API Python récemment introduite dans Spark 1.2.
Les calculs avec état sont appelés un état qui est maintenu par le Spark Streaming en fonction des données entrantes dans le flux. Les données qui circulent dans le flux sont traitées dans un laps de temps. Ce laps de temps doit être spécifié par le développeur et autorisé par Spark Streaming. La fenêtre de temps est le délai dans lequel les travaux doivent être achevés. La fenêtre temporelle est mise à jour dans un intervalle de temps également appelé intervalle glissant dans la fenêtre.
Sources de diffusion Spark
L'objet récepteur lié à un DStream d'entrée stocke les données reçues dans la mémoire Sparks pour traitement.
Le streaming intégré a deux catégories :
1. Source de base
Sources disponibles dans l'API Streaming, par exemple Socket Connection et File System.
2. Source avancée
Le niveau avancé des sources est Kinesis, Flume & Kafka, etc.
Opérations de diffusion en continu
Spark RDDS prend en charge deux types d'opérations : -
1. Opérations de sortie dans Apache Spark
Les opérations de sortie sont utilisées pour pousser les données du DStream dans un système externe tel qu'un système de fichiers ou une base de données. Les opérations de sortie permettent aux données transformées d'être consommées par les systèmes externes. Toutes les transformations DStreams sont en fait exécutées par le déclenchement, qui est effectué par les systèmes externes.
Voici les opérations de sortie actuelles :
foreachRDD(func), [suffixe]), saveAsHadoopFiles(prefix, [suffixe]), saveAsObjectFiles(prefix, [suffixe])"prefix-TIME_IN_MS[.suffix]", saveAsTextFiles(prefix, print()
Les RDD exécutent paresseusement les opérations de sortie. À l'intérieur des opérations DStream de sortie, les actions RDD sont prises avec force pour traiter les données reçues. L'exécution des opérations de sortie est effectuée une par une. Les applications Spark définissent l'ordre d'exécution des opérations de sortie.
2. Transformation d'étincelle
La transformation Spark modifie également les données du DStream car les RDD le prennent en charge dans Spark. Tout comme Spark RDD, de nombreuses modifications sont prises en charge par DStream.

Voici les opérations de transformation les plus courantes :
Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, reduceByKey(func, [numTasks]), countByValue(), reduce(), union(otherStream ), count(), repartition(numPartitions), filter(), flatMap(), map().
Conclusion
Dans le monde actuel axé sur les données, les outils de stockage et d'analyse des données se sont révélés être le facteur clé de l'analyse et de la croissance des entreprises. Le Big Data et les outils et technologies associés se sont révélés être une demande croissante. En tant que tel, Apache Spark a un grand marché et offre d'excellentes fonctionnalités aux clients et aux entreprises.
Si vous souhaitez en savoir plus sur le Big Data, consultez notre programme PG Diploma in Software Development Specialization in Big Data qui est conçu pour les professionnels en activité et fournit plus de 7 études de cas et projets, couvre 14 langages et outils de programmation, pratique pratique ateliers, plus de 400 heures d'apprentissage rigoureux et d'aide au placement dans les meilleures entreprises.
Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.