Spark
Qu’est-ce qu’Apache Spark ?
Apache Spark est un framework open source qui simplifie le développement et optimise l’efficacité des travaux d’analyse de données. Il prend en charge un large éventail d’API et de langages avec plus de 80 opérateurs de transformation de données et d’action qui masquent la complexité du calcul en cluster.
Qui assure le développement et la maintenance de Spark ?
Spark a été conçu par un grand nombre de développeurs issus de plus de 300 entreprises, et une vaste communauté d’utilisateurs contribue à son perfectionnement continu. Il est utilisé par des entreprises de nombreux secteurs et sa communauté de développeurs est la plus importante dans le domaine du Big Data.
Pourquoi Spark est-il si populaire ?
Avec des vitesses déclarées 100 fois supérieures à celles des moteurs d’analyse similaires, Spark peut accéder à des sources de données variables et s’exécuter sur plusieurs plateformes, dont Hadoop, Apache Mesos ou Kubernetes, en mode autonome ou dans le cloud. Que vous traitiez des données par lots ou en flux, vous obtiendrez des performances de haut niveau grâce à l’ordonnanceur de pointe DAG Spark, à un optimiseur de requêtes et à un moteur d’exécution physique.
Qu’est-ce qui fait la puissance de Spark ?
Spark doit sa puissance incomparable à son traitement en mémoire. Il utilise un pool distribué de nœuds à forte densité de mémoire et un codage compact des données ainsi qu’un planificateur de requêtes optimisé pour minimiser le temps d’exécution et la demande de mémoire.
Comme Spark effectue les calculs en mémoire, il peut traiter les données jusqu’à 100 fois plus vite que les frameworks qui effectuent les traitements sur disque. C’est l’outil privilégié pour traiter les grands volumes de données nécessaires à l’analyse et à l’entraînement de modèles pour le machine learning et l’IA.
En outre, il exécute une stack de bibliothèques natives qui fournissent à la fois un machine learning expert et des structures de données de type SQL, ce qui permet d’obtenir des performances exceptionnelles sur de vastes jeux de données. Et avec plus de 80 opérateurs de haut niveau, Spark facilite la création d’applications parallèles.
Quelles sont les origines de Spark ?
En 2009, à l’AMPLab de l’université de Californie à Berkeley, ce qui n’était au départ que quelques travaux de recherche de troisième cycle a rapidement donné naissance au projet désormais connu sous le nom de Spark. En 2010, l’AMPLab a mis Spark en libre accès et une collaboration plus large a commencé. En 2013, la communauté Spark s’était tellement développée qu’elle est passée sous le contrôle de l’Apache Software Foundation.
Depuis lors, plus de 1 200 développeurs issus de centaines d’organisations ont permis à Spark de continuer à évoluer pour devenir la puissante interface que nous connaissons aujourd’hui. Une enquête de 2016 a ainsi révélé que plus de 1 000 organisations utilisaient Spark en production.
Qu’est-ce qui distingue Spark et Hadoop ?
Spark et Hadoop ont quelques similitudes. Tous deux sont des frameworks open source destinés au traitement analytique des données, tous deux font partie de l’Apache Software Foundation, tous deux contiennent des bibliothèques de machine learning et tous deux peuvent être programmés dans plusieurs langages différents, tels que Java, Python, R ou Scala.
Cependant, Spark a été écrit pour étendre le nombre de calculs possibles avec Hadoop, de sorte que la véritable comparaison porte simplement sur la façon dont Spark améliore MapReduce, le composant natif de traitement des données d’Hadoop.
Par exemple, Hadoop traite les données uniquement par lots, tandis que Spark traite les données par lots et les flux de données en temps réel. En outre, si les deux logiciels disposent de bibliothèques de machine learning, seul Spark exécute les fonctions de traitement en utilisant des données en mémoire, ce qui le rend beaucoup plus rapide qu’Hadoop. Enfin, la plus grande différence entre Spark et Hadoop réside dans l’efficacité. Hadoop utilise un processus d’exécution en deux étapes, tandis que Spark crée des graphes acycliques dirigés (DAG) pour planifier les tâches et gérer les nœuds de travail afin que le traitement puisse être effectué simultanément et donc plus efficacement.
Avantages d’Apache Spark
Spark présente de nombreux avantages par rapport aux autres frameworks. Il fournit des analyses avancées dans un format facile à utiliser, avec la flexibilité et l’évolutivité nécessaires pour optimiser la vitesse et l’efficacité du traitement. Il offre notamment les avantages suivants :
Vitesse
Parce que les données sont organisées pour déployer le traitement en mémoire à l’échelle de plusieurs nœuds de cluster distribués, et dans la mesure où Spark peut effectuer le traitement sans avoir à réécrire les données sur le stockage sur disque, il peut fonctionner jusqu’à 100 fois plus vite que MapReduce pour les traitements par lots exécutés en mémoire, et 10 fois plus vite pour les traitements sur disque.
Compatibilité multilangage
Écrit en Scala, Spark est également fourni avec des connecteurs API pour l’utilisation de Java et de Python, ainsi qu’avec un package de programmation R qui permet aux utilisateurs de traiter les très grands jeux de données requis par les scientifiques des données.
Facilité d’utilisation
Grâce à une distribution plus efficace des données entre les nœuds et les clusters, Spark offre des capacités de traitement parallèle des données et d’abstraction des données. De plus, sa capacité à relier plusieurs types de bases de données ainsi qu’à calculer des données à partir de nombreux types de magasins de données permet de l’utiliser dans de multiples cas d’utilisation.
Puissance
Spark peut traiter un énorme volume de données – jusqu’à plusieurs pétaoctets selon ses partisans. Et il permet aux utilisateurs d’effectuer des analyses exploratoires sur ces volumes de données de l’ordre du pétaoctet sans avoir à les sous-échantillonner.
Analytique avancée
Spark est livré avec plusieurs bibliothèques de code permettant d’exécuter des applications d’analyse de données. Par exemple, la bibliothèque MLlib contient du code de machine learning pour des opérations statistiques avancées, et la bibliothèque Spark Streaming permet aux utilisateurs d’analyser des données en temps réel.
Accès accru aux Big Data
Spark sépare le stockage et le calcul, ce qui permet aux clients de les dimensionner indépendamment pour répondre aux besoins de performances des applications analytiques. De plus, il exécute de manière transparente des travaux par lots visant à transférer les données dans un lac ou un entrepôt de données à des fins d’analyses avancées.
Qualités dynamiques
Spark comprend des outils qui aident les utilisateurs à redimensionner dynamiquement les nœuds pour accompagner l’évolution des charges de travail. Et à la fin d’un cycle de traitement, la réaffectation automatique des nœuds est plus facile dans Spark.
Demande de développeurs Spark
Les entreprises ayant de plus en plus besoin d’un traitement analytique plus rapide pour rester compétitives, la demande de développeurs Spark augmente. Et comme le machine learning à la demande submerge le marché, ceux qui sont capables de mettre en place des accélérateurs de deep learning et des technologies d’IA sont essentiels.
Qu’est-ce que le framework Spark ?
Lorsque les développeurs qui utilisent Java ou Kotlin veulent développer des applications Web plus expressives avec un nombre limité d’éléments standard, ils se tournent souvent vers le framework Spark. Doté d’une syntaxe déclarative et expressive, Spark est conçu pour offrir un processus de développement rapide plus productif qui permet un meilleur codage.
En tant que micro-framework, Spark permet aux développeurs de tirer pleinement parti de la machine virtuelle Java (JVM) avec un processus moins lourd. Et du fait de sa syntaxe de code extrêmement concise, Spark permet un codage bien plus rationalisé qu’avec d’autres frameworks Web Java.
En outre, le langage du framework Spark est conçu pour fonctionner côté serveur avec des types déjà intégrés. Cela facilite la tâche des développeurs NodeJS utilisant des langages à typage statique qui compilent en JavaScript, comme TypeScript, de plus en plus répandus dans le développement Web côté serveur.
Spark fonctionne avec plusieurs structures de données qui en font un framework plus puissant que les autres – notamment RDD, DataFrames, Datasets, Tungsten et GraphFrames, décrits ci-dessous :
- Resilient Distributed Datasets (RDD) : Les ensembles de données résilientes, ou RDD, distribuent les données à travers les clusters pour permettre l’exécution simultanée de diverses tâches de traitement. En cas de défaillance de l’un des nœuds d’un cluster, les tâches peuvent être recalculées afin que les actions puissent se poursuivre sans intervention.
- DataFrames : Les structures DataFrames organisent les données en colonnes pour les opérations SQL. Elles n’assurent pas la sécurisation des types de données, bien que cet aspect soit couvert par les jeux de données eux-mêmes.
- Datasets : Les jeux de données, ou Datasets, organisent également les données en colonnes pour les requêtes SQL. Ils fournissent des mesures de sécurisation des types de données.
- Tungsten : D’ajout plus récent, la structure de données Tungsten a été introduite pour permettre à Spark d’atteindre des performances de l’ordre du bare metal. Elle cible la gestion de la mémoire, le traitement binaire, la génération de code et le développement d’algorithmes pour assurer un traitement plus rapide.
- GraphFrames : Avec la structure de données GraphFrames, vous pouvez exécuter des requêtes graphiques en mémoire afin d’atteindre des vitesses maximales.
En combinant ces cinq structures de données, Spark peut préparer les données et fournir des analyses descriptives et des recherches comme les autres frameworks. Mais, dans le même temps, il fournit de surcroît des analyses prédictives, des opérations de machine learning et un traitement des graphes qui permettent aux entreprises de prendre des décisions plus rapides et mieux éclairées.
Que propose HPE pour maximiser les performances de Spark ?
Les entreprises qui poursuivent une stratégie axée sur les données peuvent utiliser un certain nombre de solutions HPE pour libérer la valeur de leurs données dans des déploiements sur site, multicloud ou edge. À la pointe de la transformation digitale, HPE propose des services révolutionnaires qui intègrent Spark dans les ordinateurs portables pour accélérer les charges de travail de machine learning et d’IA, diminuant ainsi le temps nécessaire pour extraire des informations de grande valeur pour l’entreprise.
Par exemple, HPE Ezmeral est une plateforme élastique qui permet de déployer les charges de travail Apache Spark à grande échelle avec plan de contrôle mutualisé, accélération graphique, isolation et contrôle complets, ainsi que des outils d’analyse de données préconstruits. HPE Ezmeral est le premier data lakehouse à mettre des capacités cloud native au service de l’analytique, du machine learning et de l’IA sur site. Des tests récents montrent que HPE Ezmeral, NVIDIA RAPIDS et les processeurs graphiques Tensor Core A100 multiplient par 29 la vitesse d’exécution des charges de travail d’IA et d’ETL de Spark. [i]
En outre, HPE a récemment lancé HPE Ezmeral Unified Analytics, une plateforme de data lakehouse cloud innovante qui intègre Spark dans sa stack directive avec d’autres outils open source de pointe. HPE Ezmeral Unified Analytics est également disponible via HPE GreenLake.
[1] HPE a standardisé ses modèles de test en se basant sur des benchmarks Big Data exploitant des pods Kubernetes gérés par HPE Ezmeral, des processeurs graphiques NVIDIA A100 40 Go et des serveurs HPE ProLiant DL385 Gen10 Plus v2.