Apache Spark
Apache Spark est un moteur de traitement de données open source, rapide comme l'éclair, destiné aux applications d'apprentissage automatique et d'IA, soutenu par la plus grande communauté open source dans le domaine du big data.
image abstraite noire et bleue
Qu'est-ce que Apache Spark ?

Apache Spark est un moteur de traitement de données open source, rapide comme l'éclair, destiné aux applications d'apprentissage automatique et d'IA, soutenu par la plus grande communauté open source dans le domaine du Big Data.

Apache Spark (Spark) est un moteur de traitement de données open source pour les grands jeux de données. Il offre la vitesse de calcul, l'évolutivité et la programmabilité requises pour le Big Data, en particulier pour les flux de données en continu, les données graphiques, l'apprentissage automatique et les applications d'intelligence artificielle (IA).

Le moteur d'analyse de Spark traite les données 10 à 100 fois plus vite que les autres solutions. Il s'adapte en répartissant le travail de traitement sur de grands groupes 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 les plus utilisés par les analystes et les spécialistes des données, notamment Scala, Java, Python et R.

Spark est souvent comparé à Apache Hadoop, et plus particulièrement à 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 suivantes, sans écrire ni lire sur le disque, ce qui permet d'accélérer considérablement les vitesses de traitement. (Vous trouverez plus d'informations sur les différences entre Spark et Hadoop et comment Spark complète Hadoop, plus loin dans cet article).

Spark a été développé en 2009 à l'UC Berkeley. Aujourd'hui, il est géré par l'Apache Software Foundation, et peut se targuer d'être la plus grande communauté open source dans le domaine du Big Data, avec plus de 1 000 contributeurs. Il est également inclus comme composant de base dans plusieurs offres commerciales de Big Data.

Pour construire le meilleur lac de données, vous devez choisir le stockage d'objets adapté, un domaine où Apache Spark peut être d'une aide considérable.

Lire le livre électronique (909 Ko)

Fonctionnement d'Apache Spark

Apache Spark repose sur une architecture hiérarchique maître/esclave. Le Spark Driver est le nœud maître qui contrôle le gestionnaire de cluster qui gère les nœuds de travail (esclaves) et fournit les résultats des données au client d'application.

Sur la base du code de l'application, Spark Driver génère le SparkContext qui fonctionne avec le gestionnaire de cluster (le Standalone Cluster Manager de Spark ou d'autres gestionnaires de cluster) comme Hadoop YARN, Kubernetes ou Mesos, pour distribuer et surveiller l'exécution sur 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 (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 SparkContext parallelize dans un RDD pour son traitement. Une fois les données chargées dans un RDD, Spark effectue des transformations et des actions sur le RDD en mémoire, la clé de la rapidité de Spark. Spark stocke également les données en mémoire, sauf si le système en manque ou que l'utilisateur décide d'écrire les données sur le disque pour les rendre persistantes.

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. Les utilisateurs peuvent effectuer deux types d'opérations RDDdes transformations et des actionsLes transformations sont des opérations appliquées pour créer un nouveau RDDLes actions demandent à Apache Spark d'effectuer des calculs et de renvoyer le résultat au Driver.

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 graphe acyclique dirigé (DAG) pour l'ordonnancement des tâches et l'orchestration des nœuds de travail dans le cluster. Comme Spark agit sur les données et les transforme dans des processus d'exécution de tâches, l'ordonnanceur DAG facilite l'efficacité en orchestrant les nœuds de travail dans le cluster. Ce suivi des tâches rend possible la tolérance aux pannes, car il réapplique les opérations enregistrées aux données à partir d'un état antérieur.

DataFrames et Datasets

 

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

Les DataFrames sont les interfaces de programme d'applications (API) structurées les plus courantes et représentent un tableau de données avec des lignes et des colonnes. Bien que le RDD ait été une fonctionnalité essentielle de Spark, elle se trouve maintenant en mode maintenance. En raison de la popularité de la bibliothèque d'apprentissage automatique (MLlib) de Spark, les DataFrames ont pris le rôle d'API principale pour la MLlib. Il est important de le noter lorsque vous utilisez l'API MLlib, car les DataFrames assurent l'uniformité entre les différents langages, tels que Scala, Java, Python et R.

Les Datasets sont une extension des DataFrames qui fournissent une interface de programme orientée objet et sécurisée au niveau du type. Les Datasets 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 de magasins de données SQL, tels qu'Apache Hive. Les requêtes Spark SQL renvoient un DataFrame ou un Dataset lorsqu'elles sont exécutées dans un autre langage.

Spark Core

 

Spark Core est la base du traitement parallèle des données et gère l'ordonnancement, l'optimisation, le RDD et l'abstraction des données. Spark Core constitue la base fonctionnelle des bibliothèques Spark, Spark SQL, Spark Streaming, la bibliothèque d'apprentissage automatique MLlib et le traitement des données graphiques GraphX. Spark Core et le gestionnaire de cluster distribuent les données dans le cluster Spark et procèdent à leur abstraction. Cette distribution et cette abstraction rendent la manipulation des Big Data très rapide et conviviale.

API Spark

 

Spark comprend diverses interfaces de programme d'application (API) pour mettre la puissance de Spark à la portée du plus grand nombre. Spark SQL permet d'interagir avec les données RDD d'une 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 nuances spécifiques dans la façon dont elle traite les données. Les RDD, DataFrames et Datasets sont disponibles dans chaque API de langage. Avec des API pour une telle variété de langages, Spark rend le traitement Big Data accessible à des groupes plus diversifiés de personnes ayant une formation en développement, en science des données et en statistiques.

Produits à la une

Analytics Engine

Apache Spark et l'apprentissage automatique

Spark dispose de diverses bibliothèques qui étendent ses fonctionnalités à l'apprentissage automatique, à l'intelligence artificielle (IA) et au traitement des flux.

Apache Spark MLlib

 

L'une des fonctionnalités essentielles d'Apache Spark est l'apprentissage automatique disponible dans la MLlib de Spark. MLlib Apache Spark fournit une solution prête à l'emploi pour la classification et la régression, le filtrage collaboratif, le regroupement, l'algèbre linéaire distribuée, les arbres de décision, les forêts aléatoires, les arbres boostés par gradient, l'exploration de modèles fréquents, les mesures d'évaluation et les statistiques. Les fonctionnalités de la bibliothèque MLlib, combinées aux différents types de données que Spark peut traiter, font d'Apache Spark un outil de Big Data indispensable.

Spark GraphX

 

Outre les fonctionnalités d'API, Spark dispose de Spark GraphX, un nouvel ajout à Spark qui résout les problèmes de graphes. GraphX est une abstraction sous la forme d'un graphe qui étend les RDD pour les graphes et le calcul parallèle dans les graphes. Spark GraphX s'intègre aux bases de données de graphes qui stockent des informations sur l'interconnexion ou les réseaux de connexion, comme ceux d'un réseau social.

Spark Streaming

 

Spark Streaming est une extension de l'API Spark de base qui permet le traitement évolutif et tolérant aux pannes de flux de données en direct. En traitant les données, Spark Streaming peut les transmettre à des systèmes de fichiers, à des bases de données et à des tableaux de bord en direct pour effectuer des analyses en temps réel grâce aux algorithmes d'apprentissage automatique et de traitement des graphes de Spark. Reposant sur le moteur Spark SQL, Spark Streaming permet également d'exécuter un traitement incrémentiel par lots qui accélère le traitement des données transmises en flux continu.

Liens connexes

Hadoop

Analyse du Big Data

Spark, Apache Hadoop et MapReduce

La combinaison « Spark et Hadoop » est fréquemment recherchée sur le Web, mais comme indiqué précédemment, Spark est plutôt une amélioration de Hadoop et, plus précisément, du composant de traitement de données natif de Hadoop, MapReduce. 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 jeux de données en traitant des parties du jeu de données en parallèle sur de grands clusters d'ordinateurs. Mais là où MapReduce traite les données sur disque, ajoutant 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 vite que MapReduce. 

Les API intégrées de Spark pour de multiples langages le rendent plus pratique et plus accessible aux développeurs que MapReduce, qui a la réputation de compliquer la programmation. Contrairement à MapReduce, Spark peut exécuter des applications de traitement en continu dans des clusters Hadoop en utilisant YARN, le cadre de gestion des ressources et d'ordonnancement des tâches d'Hadoop. Comme indiqué ci-dessus, Spark ajoute les fonctionnalités MLlib, GraphX et SparkSQL. En outre, Spark peut traiter des données provenant d'autres sources de données en dehors de l'application Hadoop, notamment Apache Kafka.

Sinon, Spark est compatible avec Hadoop et le complète. Il peut traiter les données Hadoop, notamment celles provenant de HDFS (le système de fichiers distribués Hadoop), HBase (une base de données non relationnelle qui fonctionne sur HDFS), Apache Cassandra (une alternative NoSQL à HDFS) et Hive (un entrepôt de données basé sur Hadoop).

Solutions connexes
AIOps

Découvrez l'AIOps, un domaine qui tire parti de l'analyse, de l'intelligence artificielle et d'autres technologies pour rendre les opérations informatiques plus efficaces et plus performantes.

Explorer l'AIOps
IBM Spectrum Conductor

Déployez en toute confiance IBM Spectrum Conductor et d'autres services pour un environnement d'entreprise à service partagé, à la fois sur site et dans le cloud.

Explorer IBM Spectrum Conductor
IBM Analytics Engine

Analytics Engine est un service Apache Spark et Apache Hadoop combiné qui permet de créer des applications d'analyse.

Explorer IBM Analytics Engine
Pour aller plus loin

Spark est un outil puissant à ajouter à une solution de données d'entreprise pour faciliter l'analyse des big data. Il s'intègre également bien aux solutions big data d'IBM existantes. IBM Spectrum Conductor est une plateforme à service partagé permettant de déployer et de gérer Apache Spark et d'autres frameworks d'application sur un cluster commun de ressources partagées. Spectrum Conductor offre des fonctions de gestion de charge de travail, de surveillance, d'alerte, de production de rapports et de diagnostic et peut exécuter simultanément plusieurs versions courantes et différentes de Spark et d'autres frameworks. Les utilisateurs peuvent facilement déployer et gérer Apache Spark avec une distribution Spark intégrée.

Explorer IBM Spectrum Conductor aujourd'hui