Definition

Spark (Apache)

Qu'est-ce qu'Apache Spark ?

Apache Spark est un cadre de traitement parallèle open source permettant d'exécuter des applications d'analyse de données à grande échelle sur des ordinateurs en grappe. Il peut gérer des charges de travail d'analyse et de traitement de données en batch et en temps réel.

Spark est devenu un projet de premier niveau de la fondation logicielle Apache en février 2014, et la version 1.0 d'Apache Spark a été publiée en mai 2014. La version 2.0 de Spark a été publiée en juillet 2016.

La technologie a été initialement conçue en 2009 par des chercheurs de l'université de Californie à Berkeley pour accélérer le traitement des tâches dans les systèmes Hadoop.

Spark Core, le cœur du projet qui fournit des fonctionnalités de transmission de tâches distribuées, de planification et d'E/S, offre aux programmeurs une alternative potentiellement plus rapide et plus flexible à MapReduce, le cadre logiciel auquel les premières versions d'Hadoop étaient liées. Les développeurs de Spark affirment qu'il peut exécuter des tâches 100 fois plus rapidement que MapReduce lorsqu'elles sont traitées en mémoire, et 10 fois plus rapidement sur disque.

Comment fonctionne Apache Spark

Apache Spark peut traiter des données provenant de divers référentiels, notamment le système de fichiers distribués Hadoop (HDFS), les bases de données NoSQL et les magasins de données relationnels, tels qu'Apache Hive. Spark prend en charge le traitement en mémoire afin d'améliorer les performances des applications analytiques de big data, mais il peut également effectuer un traitement conventionnel sur disque lorsque les ensembles de données sont trop volumineux pour tenir dans la mémoire disponible du système.

Le moteur Spark Core utilise l'ensemble de données distribuées résilientes, ou RDD, comme type de données de base. Le RDD est conçu de manière à dissimuler aux utilisateurs une grande partie de la complexité des calculs. Il regroupe les données et les répartit sur un cluster de serveurs, où elles peuvent ensuite être calculées et déplacées vers un autre magasin de données ou exécutées par un modèle analytique. L'utilisateur n'a pas à définir où les fichiers spécifiques sont envoyés ou quelles ressources informatiques sont utilisées pour stocker ou récupérer les fichiers.

En outre, Spark peut gérer plus que les applications de traitement par lots que MapReduce est limité à exécuter.

Bibliothèques Spark

Le moteur Spark Core fonctionne en partie comme une couche d'interface de programmation d'applications (API) et sous-tend un ensemble d'outils connexes pour la gestion et l'analyse des données. Outre le moteur de traitement Spark Core, l'environnement Apache Spark API est fourni avec des bibliothèques de code à utiliser dans les applications d'analyse de données. Ces bibliothèques sont les suivantes

  • Spark SQL -- L'une des bibliothèques les plus utilisées, Spark SQL permet aux utilisateurs d'interroger des données stockées dans des applications disparates à l'aide du langage SQL commun.
  • Spark Streaming -- Cette bibliothèque permet aux utilisateurs de créer des applications qui analysent et présentent des données en temps réel.
  • MLlib -- Une bibliothèque de code d'apprentissage automatique qui permet aux utilisateurs d'appliquer des opérations statistiques avancées aux données de leur cluster Spark et de construire des applications autour de ces analyses.
  • GraphX -- Une bibliothèque intégrée d'algorithmes pour le calcul parallèle de graphes.

Langues Spark

Spark a été écrit en Scala, qui est considéré comme le principal langage pour interagir avec le moteur Spark Core. Spark est également livré avec des connecteurs API pour Java et Python. Java n'étant pas considéré comme un langage optimal pour l'ingénierie ou la science des données, de nombreux utilisateurs se tournent vers Python, qui est plus simple et mieux adapté à l'analyse des données.

Il existe également un package de programmation R que les utilisateurs peuvent télécharger et exécuter dans Spark. Cela permet aux utilisateurs d'exécuter le langage de science des données de bureau populaire sur des ensembles de données distribuées plus importants dans Spark et de l'utiliser pour créer des applications qui exploitent des algorithmes d'apprentissage automatique.

Cas d'utilisation d'Apache Spark

Le large éventail de bibliothèques Spark et sa capacité à calculer des données à partir de nombreux types de magasins de données différents signifient que Spark peut être appliqué à de nombreux problèmes différents dans de nombreux secteurs d'activité. Les entreprises de publicité numérique l'utilisent pour maintenir des bases de données sur l'activité du web et concevoir des campagnes adaptées à des consommateurs spécifiques. Les sociétés financières l'utilisent pour ingérer des données financières et exécuter des modèles pour guider l'activité d'investissement. Les entreprises de biens de consommation l'utilisent pour agréger les données des clients et prévoir les tendances afin d'orienter les décisions en matière de stocks et de repérer les nouvelles opportunités de marché.

Les grandes entreprises qui travaillent avec des applications de big data utilisent Spark en raison de sa vitesse et de sa capacité à relier plusieurs types de bases de données et à exécuter différents types d'applications analytiques. À l'heure où nous écrivons ces lignes, Spark est la plus grande communauté open source dans le domaine des big data, avec plus de 1 000 contributeurs issus de plus de 250 organisations.

Cette définition a été mise à jour en mars 2016

Pour approfondir sur Big Data et Data lake