Accueil les sujets Apache Spark Qu’est-ce qu’Apache Spark ?
Découvrir la solution Apache Spark d’IBM S’abonner aux mises à jour sur l’IA
Illustration par un collage de pictogrammes représentant des nuages, un diagramme circulaire, des pictogrammes de graphique
Qu’est-ce qu’Apache Spark ?

Apache Spark est un moteur de traitement de données open source ultra-rapide pour les applications de machine learning et d’IA, soutenu par la plus grande communauté open source dans le domaine du big data.

Apache Spark (Spark) traite facilement des jeux de données à grande échelle et est un système de clustering rapide et polyvalent qui convient parfaitement à PySpark. Il est conçu pour offrir la vitesse de calcul, l’évolutivité et la programmabilité requises pour le big data, en particulier pour les données en continu, les données graphiques, l’analytique, le machine learning, le traitement de données à grande échelle et les applications d’intelligence artificielle (IA).

Le moteur d’analyse de Spark traite les données 10 à 100 fois plus rapidement que certaines autres solutions comme Hadoop (lien externe à ibm.com) pour les charges de travail plus petites. Il monte en charge en répartissant les workflows sur de grands clusters d’ordinateurs, avec un parallélisme et une tolérance aux pannes intégrés. Il comprend même des API pour les langages de programmation populaires parmi les analystes de données et les data scientists, notamment Scala, Java, Python et R.

Spark est souvent comparé à Apache Hadoop, et plus particulièrement à Hadoop MapReduce, le composant natif de traitement des données d’Hadoop. La principale différence entre Spark et MapReduce réside dans le fait que Spark traite et conserve les données en mémoire pour les étapes ultérieures, sans écrire sur le disque ni lire à partir du disque, ce qui se traduit par des vitesses de traitement considérablement plus rapides. (Vous trouverez plus d’informations sur la façon dont Spark se compare à Hadoop et le complète dans cet article.)

Spark a été développé en 2009 au sein de l’AMPLab de l’Université de Californie à Berkeley. Aujourd’hui, il est géré par l’Apache Software Foundation et compte la plus grande communauté open source dans le domaine du big data, avec plus de 1 000 contributeurs. Il est également inclus en tant que composant central de plusieurs offres commerciales de big data.

IA générative et ML au service des entreprises

Explorez les principaux avantages de l’IA générative et découvrez comment les organisations peuvent intégrer l'IA générative et le machine learning dans leurs activités.

eBook

Obtenir l’eBook sur les entrepôts de données pour l’IA

Fonctionnement d’Apache Spark

Apache Spark possède une architecture primaire/secondaire hiérarchique. Le Spark Driver est le nœud principal qui contrôle le gestionnaire de cluster, qui gère les nœuds secondaires et fournit les résultats des données au client de l’application.

En fonction du code d’application, Spark Driver génère le SparkContext, qui fonctionne avec le gestionnaire de cluster (Standalone Cluster Manager de Spark ou d’autres gestionnaires de cluster tels que Hadoop YARN, Kubernetes ou Mesos) pour distribuer et surveiller l’exécution dans l’ensemble des nœuds. Il crée également des jeux de données distribués résilients (RDD), qui sont la clé de la vitesse de traitement remarquable de Spark.

Jeu de données distribué résilient (RDD)


Les jeux de données distribués résilients (« Resilient Distributed Datasets » ou RDD) sont des collections d’éléments tolérants aux pannes qui peuvent être distribués entre plusieurs nœuds d’un cluster et traités en parallèle. Les RDD sont une structure fondamentale dans Apache Spark.

Spark charge les données en référençant une source de données ou en parallélisant une collection existante avec la méthode de parallélisation SparkContext de mise en cache des données dans un RDD pour traitement. Une fois les données chargées dans un RDD, Spark effectue des transformations et des actions sur les RDD en mémoire, la clé de la vitesse de Spark. Spark stocke également les données en mémoire, sauf si le système manque de mémoire ou si l’utilisateur décide d’écrire les données sur le disque pour les conserver.

Chaque jeu de données dans un RDD est divisé en partitions logiques, qui peuvent être calculées sur différents nœuds du cluster. Et les utilisateurs peuvent effectuer deux types d’opérations RDDles transformations et les actionsLes transformations sont des opérations appliquées pour créer un nouveau RDDLes actions sont utilisées pour indiquer à Apache Spark d’appliquer le calcul et de transmettre le résultat au pilote.

Spark prend en charge diverses actions et transformations sur les RDD. Cette distribution est effectuée par Spark, de sorte que les utilisateurs n’ont pas à se soucier de calculer la bonne distribution.

Graphe acyclique dirigé (DAG)


Contrairement au processus d’exécution en deux étapes de MapReduce, Spark crée un graphique acyclique dirigé (« Directed Acyclic Graph » ou DAG) pour planifier les tâches et l’orchestration des nœuds dans le cluster. Au fur et à mesure que Spark agit et transforme les données dans les processus d’exécution des tâches, le planificateur DAG facilite l’efficacité en orchestrant les nœuds dans le cluster. Ce suivi des tâches rend la tolérance aux pannes possible, car il réapplique les opérations enregistrées aux données d’un état précédent.

DataFrames et jeux de données


Outre les RDD, Spark gère deux autres types de données : les DataFrames et les jeux de données.

Les DataFrames sont les interfaces de programmation des applications (API) structurées les plus courantes et représentent une table de données avec des lignes et des colonnes. Bien que les RDD aient été une fonctionnalité essentielle de Spark, elle est désormais en mode maintenance. En raison de la popularité de la bibliothèque de machine learning (MLlib) de Spark, les DataFrames ont joué le rôle principal en tant qu’API principale pour MLlib (un ensemble d’algorithmes de machine learning pour l’évolutivité assortis d’outils pour la sélection des fonctionnalités et la création de pipelines de ML). Il est important de garder cela à l’esprit lors de l’utilisation de l’API MLlib, car les DataFrames assurent l’uniformité dans les différents langages, comme Scala, Java, Python et R.

Les jeux de données sont une extension des DataFrames, qui fournissent une interface de programmation orientée objet et sécurisée. Les jeux de données sont, par défaut, une collection d’objets JVM fortement typés, contrairement aux DataFrames.

Spark SQL permet d’interroger des données à partir de DataFrames et d’entrepôts de données SQL, tels qu’Apache Hive. Les requêtes Spark SQL renvoient un DataFrame ou un jeu de données lorsqu’elles sont exécutées dans une autre langue.

Spark Core


Spark Core constitue la base de tout le traitement parallèle des données et gère la planification, l’optimisation, les RDD et l’abstraction des données. Spark Core fournit la base fonctionnelle des bibliothèques Spark, de Spark SQL, de Spark Streaming, de la bibliothèque de machine learning MLlib et du traitement des données graphiques GraphX. Le Spark Core et le gestionnaire de cluster distribuent les données dans le cluster Spark et en font des abstractions. Cette distribution et cette abstraction rendent le traitement du big data très rapide et intuitif.

API Spark


Spark comprend une variété d’ interfaces de programmation des applications (API) pour apporter la puissance de Spark au plus large public. Spark SQL permet d’interagir avec les données des RDD de manière relationnelle. Spark dispose également d’une API bien documentée pour Scala, Java, Python et R. Chaque API de langage dans Spark a ses propres nuances dans la façon dont elle traite les données. Les RDD, les DataFrames et les jeux de données sont disponibles dans chaque API de langage. Avec des API pour une telle variété de langages, Spark rend le traitement du big data accessible à des groupes plus diversifiés de personnes ayant une expérience en développement, en science des données, en ingénierie des données et en statistiques.

Avantages d’Apache Spark 

Spark accélère le développement et les opérations de diverses manières. Spark aidera les équipes à :  

  • Accélérer le développement des applications : les modèles de programmation Streaming et SQL d’Apache Spark, soutenus par MLlib et GraphX, facilitent la création d’applications qui exploitent l’apprentissage automatique et l’analyse graphique.

  • Innover plus rapidement : les API facilitent l’utilisation des données semi-structurées et la transformation des données.  

  • Optimiser les processus grâce à des technologies ouvertes : l’OpenPower Foundation permet d’innover en matière de GPU, de CAPI Flash, de RDMA, d’accélération FPGA et d’apprentissage automatique afin d’optimiser les performances des workloads Apache Spark.

  • Traiter plus rapidement les données : Spark peut être 100 fois plus rapide que Hadoop (lien externe à ibm.com) pour les petits workloads grâce à son moteur de calcul en mémoire avancé et à son stockage de données sur disque.

  • Accélérer l’accès à la mémoire : Spark peut être utilisé pour créer un grand espace mémoire pour le traitement des données, qui permet aux utilisateurs plus avancés d’accéder aux données sur des interfaces utilisant Python, R et Spark SQL.

Apache Spark et machine learning

Spark possède plusieurs bibliothèques qui étendent les capacités à l’apprentissage automatique, à l’intelligence artificielle (IA) et au traitement des flux.

Apache Spark MLlib


Les caractéristiques les plus importantes d’Apache Spark sont ses capacités de machine learning disponibles dans Spark MLlib, qui fournissent une solution prête à l’emploi pour effectuer la classification et la régression, le filtrage collaboratif, le clustering, l’algèbre linéaire distribuée, les arbres de décision, les forêts aléatoires, les arbres renforcés par les gradients, l’exploration fréquente de modèles, les mesures d’évaluation et les statistiques. Les capacités de MLlib, combinées aux différents types de données, font d’Apache Spark un outil de big data indispensable.

Spark GraphX


En plus de ses capacités d’API, Spark GraphX est conçu pour résoudre les problèmes de graphes. GraphX est une abstraction de graphiques qui étend les RDD pour les graphiques et le calcul parallèle aux graphiques. Spark GraphX s’intègre aux bases de données de graphes qui stockent des informations d’interconnectivité ou des réseaux d’informations de connexion, comme ceux d’un réseau social.

Spark Streaming


Spark Streaming est une extension de l’API de base de Spark, qui permet un traitement évolutif et tolérant aux pannes des flux de données en direct. Au fur et à mesure que Spark Streaming traite les données, il peut les transmettre à des systèmes de fichiers, à des bases de données et à des tableaux de bord en direct pour des analyses de streaming en temps réel grâce aux algorithmes de machine learning et de traitement graphique de Spark. Construit sur le moteur Spark SQL, Spark Streaming permet également un traitement par lots incrémentiel qui accélère le traitement des données diffusées.

Liens connexes

Hadoop

analyse du big data

Spark comparé à Apache Hadoop et MapReduce

« Spark comparé à Hadoop » est un terme fréquemment recherché sur le Web, mais comme indiqué ci-dessus, Spark est davantage une amélioration d’Hadoop, et plus précisément de MapReduce, son composant natif de traitement des données. En fait, Spark repose sur le framework MapReduce et, aujourd’hui, la plupart des distributions Hadoop incluent Spark.

Comme Spark, MapReduce permet aux programmeurs d’écrire des applications qui traitent plus rapidement d’énormes ensembles de données en traitant des parties de l’ensemble de données en parallèle sur de grands clusters d’ordinateurs. En revanche, là où MapReduce traite les données sur disque, ajoutant ainsi des temps de lecture et d’écriture qui ralentissent le traitement, Spark effectue les calculs en mémoire, ce qui est beaucoup plus rapide. Par conséquent, Spark peut traiter les données jusqu’à 100 fois plus rapidement que MapReduce. 

Les API intégrées de Spark pour plusieurs langues le rendent plus pratique et plus accessible pour les développeurs que MapReduce, qui a la réputation d’être difficile à programmer. Contrairement à MapReduce, Spark peut exécuter des applications de traitement de flux sur des clusters Hadoop à l’aide de YARN, le framework de gestion des ressources et de planification des tâches d’Hadoop. Comme indiqué ci-dessus, Spark ajoute les fonctionnalités de MLlib, de GraphX et de SparkSQL. En outre, Spark peut gérer des données provenant d’autres sources de données extérieures à l’application Hadoop, notamment Apache Kafka.

A part cela, Spark est compatible avec Hadoop et le complémente. Il peut traiter les données Hadoop, y compris les données de HDFS (Hadoop Distributed File System), de HBase (une base de données non relationnelle qui fonctionne sur HDFS), d’Apache Cassandra (une alternative NoSQL à HDFS) et de Hive (un entrepôt de données basé sur Hadoop).

Solutions connexes
IBM Analytics Engine

Analytics Engine est un service Apache Spark et Apache Hadoop pour la création d’applications analytiques.

Explorer IBM Analytics Engine
IBM Watson Studio

Instaurer la confiance et dimensionner l’IA dans les environnements cloud. Donnez aux data scientists, aux développeurs et aux analystes les moyens de construire, d’exécuter et de gérer des modèles d’IA, et d’optimiser les décisions.

Découvrir IBM Watson Studio
Apache Spark sur IBM Power

Comptez sur un framework open source de calcul optimisé pour un traitement des données extrêmement rapide et à grande échelle.

Découvrir Apache Spark sur IBM Power
IBM Spectrum Conductor

Déployez en toute confiance IBM Spectrum Conductor et d’autres services pour un environnement d’entreprise multi-locataire, sur site et dans le cloud

Découvrir IBM Spectrum Conductor
Ressources Découvrir l’analyse big data avec Apache Spark

Découvrez comment Spark permet de simplifier la tâche difficile et gourmande en calcul du traitement de gros volumes de données en temps réel.

Hadoop et Spark : quelle est la différence ?

Découvrez les architectures respectives de Hadoop et de Spark, et comprenez comment ces frameworks Big Data se comparent dans différents scénarios.

IA générative et ML au service des entreprises

Explorez les principaux avantages de l’IA générative et découvrez comment les organisations peuvent intégrer l'IA générative et le machine learning dans leurs activités.

Découvrez les étapes détaillées qu’un développeur peut suivre pour effectuer une ou plusieurs tâches

Ces tutoriels fournissent des instructions pratiques qui aident les développeurs à apprendre à utiliser les technologies dans leurs projets.

Migrer des applications héritées vers Apache Spark

Découvrez comment transformer les systèmes centraux avec Apache Spark. Gagnez en agilité, en performance et accédez à un écosystème plus large.

Passez à l’étape suivante

Faites évoluer les workloads d’IA pour toutes vos données n’importe où avec IBM watsonx.data, un entrepôt de données adapté à vos besoins basé sur une architecture data lakehouse ouverte.

Découvrir watsonx.data Réserver une démo en direct