Introduction à Apache Spark - Atelier Apache Spark

Ce document présente une introduction complète à Apache Spark, une plateforme de traitement distribué conçue pour gérer de grandes quantités de données. Destiné aux étudiants et professionnels souhaitant comprendre les bases de Spark, ce matériel couvre son architecture, ses composants, ses caractéristiques, ainsi que ses limites.

D'après le document Introduction à Apache Spark - Atelier Apache Spark

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Introduction à Apache Spark - Atelier Apache Spark

Document source

Introduction à Apache Spark - Atelier Apache Spark

Big Data, Data Processing, Machine Learning · PDF · 7 pages · 2021

Afficher l'aperçu du document

Consulter le document original →

Ce document présente une introduction complète à Apache Spark, une plateforme de traitement distribué conçue pour gérer de grandes quantités de données. Destiné aux étudiants et professionnels souhaitant comprendre les bases de Spark, ce matériel couvre son architecture, ses composants, ses caractéristiques, ainsi que ses limites.

Présentation d'Apache Spark

Apache Spark est une plateforme de traitement sur cluster générique, libre et open-source, permettant un traitement parallèle et distribué de données massives. Il offre une API de développement pour le traitement en batch, le streaming, l'apprentissage automatique et la gestion de requêtes SQL sur de grands volumes de données.

Spark peut traiter des données par lot (batch processing) ou à la volée (stream processing). Il s'intègre facilement avec les technologies Big Data, notamment Hadoop, en accédant aux sources de données Hadoop et en s'exécutant sur un cluster Hadoop. Spark n'inclut pas de solution de stockage propre, mais exploite la puissance de systèmes comme HDFS pour le stockage des données.

Une des forces de Spark réside dans son traitement en mémoire (in-memory processing), qui utilise les ressources combinées d'un cluster comme si c'était une seule machine, ce qui améliore considérablement les performances.

Créé en 2009 au laboratoire UC Berkeley AMPLab, Spark est devenu open-source en 2010 sous licence BSD, puis projet Apache de haut niveau en 2014.

Composants d'Apache Spark

Apache Spark repose sur une architecture en couches avec plusieurs composants clés, chacun dédié à un type de traitement ou d'analyse :

  • Spark Core : le cœur de Spark, fournissant la plateforme d'exécution pour toutes les applications Spark et supportant un large éventail d'applications.
  • Spark SQL : permet d'exécuter des requêtes SQL/HQL sur des données structurées ou semi-structurées avec une performance améliorée.
  • Spark Streaming : facilite la création d'applications d'analyse de données interactives en traitant les flux de données sous forme de micro-lots.
  • Spark MLlib : bibliothèque de machine learning offrant des algorithmes performants pour l'apprentissage automatique, optimisés pour le traitement en mémoire.
  • Spark GraphX : moteur d'exécution pour le traitement scalable de graphes, basé sur Spark Core.

Architecture de Spark

Les applications Spark s'exécutent sous forme d'un ensemble de processus indépendants sur un cluster, coordonnés par un objet SparkContext dans le programme principal appelé driver program.

SparkContext peut se connecter à différents gestionnaires de clusters (Cluster Managers) :

  • Le gestionnaire autonome de Spark, simple et rapide à mettre en place.
  • Apache Mesos, gestionnaire général pouvant aussi tourner sur Hadoop Map Reduce.
  • Hadoop YARN, gestionnaire de ressources de Hadoop 2.
  • Kubernetes, système open-source pour le déploiement et la gestion d'applications conteneurisées.

Ces gestionnaires allouent les ressources nécessaires pour exécuter plusieurs applications Spark simultanément. Spark lance des exécuteurs sur les nœuds du cluster, qui exécutent les traitements et stockent les données intermédiaires. Le code de l'application est envoyé aux exécuteurs, qui reçoivent ensuite les tâches à exécuter.

Chaque application dispose de ses propres exécuteurs, actifs pendant toute la durée de l'exécution, et isolés des autres applications. Les tâches sont lancées sur plusieurs threads au sein de ces exécuteurs. Les applications Spark ne peuvent pas échanger de données directement sans passer par un stockage externe.

Spark est indépendant du gestionnaire de cluster sous-jacent et peut être configuré pour utiliser celui choisi, permettant la gestion simultanée des ressources avec d'autres applications, même non-Spark.

Exemple d'exécution sur un cluster

Supposons une application Spark qui analyse un grand jeu de données stocké sur HDFS. Le driver program initialise un SparkContext qui se connecte au gestionnaire YARN. YARN alloue des ressources et Spark lance des exécuteurs sur plusieurs nœuds. Le code de l'application est envoyé aux exécuteurs, qui traitent les données en parallèle. Les résultats sont ensuite collectés et renvoyés au driver.

Caractéristiques principales d'Apache Spark

  • Performance élevée : Spark peut être jusqu'à 100 fois plus rapide que Hadoop Map Reduce grâce au traitement en mémoire, à la réduction des lectures/écritures disque, et à l'utilisation de caches.
  • Dynamicité : Spark offre environ 80 opérateurs haut niveau facilitant le développement d'applications parallèles.
  • Tolérance aux fautes : grâce aux RDD (Resilient Distributed Datasets), Spark peut récupérer les données en cas de panne.
  • Traitement à la volée : Spark permet le traitement quasi temps réel via le streaming par micro-lots.
  • Évaluations paresseuses (Lazy Evaluations) : les transformations sur les RDD ne sont pas exécutées immédiatement, mais seulement lors d'une action, ce qui optimise les calculs.
  • Support multi-langages : Java, Scala, Python et R sont supportés.
  • Communauté active : de nombreux développeurs et entreprises contribuent au projet, en constante évolution.
  • Outils d'analyse sophistiqués : Spark propose des modules dédiés pour le streaming, les requêtes interactives, le machine learning, etc.
  • Intégration avec Hadoop : Spark peut s'exécuter indépendamment ou sur Hadoop YARN, profitant du système de fichiers distribué HDFS.

Exemple de transformation paresseuse

Supposons un RDD contenant une liste de nombres. Appliquer une transformation map pour multiplier chaque nombre par 2 ne déclenche pas immédiatement le calcul :

val rdd2 = rdd.map(x => x * 2)

Le calcul s'exécute uniquement lorsqu'une action est appelée, par exemple :

rdd2.collect()

Cette action force l'exécution de la transformation et retourne les résultats.

Limitations d'Apache Spark

  • Pas de traitement en temps réel strict : Spark utilise un traitement par micro-lots, ce qui ne correspond pas à un streaming en temps réel pur.
  • Problèmes avec les petits fichiers : Spark est optimisé pour les gros volumes de données. Traiter de petits fichiers peut entraîner un surcoût inutile.
  • Pas de système de gestion des fichiers : Spark ne gère pas le stockage des données, il s'appuie sur des systèmes externes comme HDFS ou Amazon S3.
  • Coût mémoire élevé : Le traitement en mémoire peut entraîner une consommation importante de ressources sur le cluster.
  • Nombre limité d'algorithmes ML : La bibliothèque MLlib, bien que riche, ne couvre pas tous les algorithmes possibles.
  • Latence plus élevée que certains concurrents : Pour le traitement à la volée, la latence de Spark est plus importante que celle d'autres solutions comme Apache Flink.

Glossaire des termes clés

  • Apache Spark : plateforme de traitement distribué de données massives, open-source et multi-langages.
  • Batch processing : traitement par lots de données.
  • Stream processing : traitement continu des flux de données.
  • Spark Core : composant central fournissant la plateforme d'exécution.
  • Spark SQL : module pour exécuter des requêtes SQL sur des données structurées.
  • Spark Streaming : module pour le traitement de flux de données en micro-lots.
  • Spark MLlib : bibliothèque d'algorithmes de machine learning.
  • Spark GraphX : moteur pour le traitement de graphes.
  • SparkContext : objet coordonnateur des applications Spark, gérant la connexion au cluster.
  • Driver program : programme principal qui contrôle l'exécution de l'application Spark.
  • Gestionnaire de cluster (Cluster Manager) : système qui alloue les ressources sur un cluster (ex : YARN, Mesos, Kubernetes).
  • Exécuteur (Executor) : processus sur un nœud du cluster qui exécute les tâches Spark.
  • RDD (Resilient Distributed Dataset) : structure de données distribuée tolérante aux fautes, supportant les transformations paresseuses.
  • Évaluation paresseuse (Lazy Evaluation) : principe selon lequel les transformations ne sont exécutées que lors d'une action.
  • HDFS : système de fichiers distribué de Hadoop.

Points clés à retenir

  • Apache Spark est une plateforme puissante pour le traitement distribué de données massives, offrant des performances élevées grâce au traitement en mémoire.
  • Son architecture modulaire comprend plusieurs composants spécialisés pour le SQL, le streaming, le machine learning et le traitement de graphes.
  • Spark s'exécute sur différents gestionnaires de clusters, ce qui lui confère une grande flexibilité d'intégration.
  • Les transformations sur les données sont évaluées paresseusement, optimisant ainsi les calculs.
  • Malgré ses nombreux avantages, Spark présente des limites, notamment en termes de traitement en temps réel strict, gestion des petits fichiers et consommation mémoire.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions