menu EXPLOREZ
history RÉCENT

Qu'est-ce qu'Apache Spark

Apache Spark est un framework conçu pour gérer d'énormes quantités de données de manière distribuée, conçu pour être rapide et faciliter l'utilisation d'opérations distribuées comme si vous travailliez sur un seul nœud.

C'est un projet de la fondation Apache donc il est open source. De nombreux groupes sont à l'origine du développement et de la maintenance d'Apache Spark.

De plus, il permet la connexion avec d'autres frameworks de l'écosystème Hadoop comme Kafka, Hbase ou Hive.

A quoi sert Spark dans le monde du Big Data ?

Le 22ème siècle est sans aucun doute le siècle technologique dominé par la grande quantité de données générées chaque seconde.

La plupart des applications que nous utilisons sur nos téléphones mobiles collectent constamment des informations sur nos actions et nos emplacements.

Tout cela est stocké dans de grands entrepôts de données contenant des millions et des millions d’entrées.

Comment pouvons-nous extraire des informations utiles d’une immense mer de données ?

Ce problème est résolu grâce à la technologie Big Data, dont Spark fait partie.

Cette quantité incroyable d’informations ne peut pas être stockée sur un seul ordinateur, elle est donc distribuée sur différents ordinateurs que nous appelons nœuds. L'ensemble des nœuds est appelé un cluster.

Lorsque nous avons besoin d'extraire des informations, nous devons parcourir les données trouvées dans les différents nœuds du système. C’est là qu’intervient la fonction de Spark, facilitant cette tâche qui semble à première vue si compliquée.

Apache Spark nous permet d'orchestrer, de distribuer et de surveiller tous les nœuds pour obtenir les informations nécessaires à notre projet.

Spark charge les données à partir d'un système de fichiers distribué tel que HDFS et crée des objets appelés RDD (Resilient Distributed Datasets). Sur ces objets nous pouvons établir certaines actions telles que des recherches, des jointures ou des regroupements pour obtenir les informations qui nous intéressent depuis la base de données.

Lorsque nous planifions les actions, un graphe acyclique dirigé (DAG) est formé où les nœuds sont les opérations qui doivent être exécutées. Cependant, Spark se caractérise par ce que l'on appelle une évaluation paresseuse, de sorte que les opérations ne sont exécutées que lorsqu'un certain événement est déclenché.

Un point très important de Spark est qu'il s'agit d'un framework très flexible d'utilisation puisqu'il comprend différentes API qui permettent son utilisation dans différents langages de programmation. Les API incluses sont Scala, Java, Python, SQL et R.

Composants principaux d'Apache Spark

CoreSpark

Spark Core est le cœur de Spark et à partir duquel fonctionnent le reste des composants que nous verrons ci-dessous.

Le Core est en charge d'orchestrer et de distribuer les tâches du nœud maître au reste des nœuds. Cela fonctionne sur YARN ou Mesos, qui sont les applications en charge de gérer les ressources du cluster.

Diffusion d'étincelles

Spark Streaming est une extension qui permet le traitement des données en temps réel. Nous vivons dans une société axée sur les données, où de nouvelles informations sont générées chaque seconde, par exemple sur les réseaux sociaux.

De nombreuses entreprises souhaitent analyser en temps réel ce qui se passe dans le monde. Spark Streaming se connecte aux sources de données et traite ces informations pour obtenir à tout moment des données pertinentes sur ce qui se passe.

Spark SQL

Spark SQL est un module qui permet de traiter les tables de données comme un objet appelé dataframe. Les dataframes peuvent être créées à partir de plusieurs sources d'informations telles que Avro, Parquet ou JDCB.

Spark SQL vous permet de faire des requêtes en SQL, facilitant ainsi l'obtention de données puisque SQL est très similaire au langage naturel des humains.

SparkMLlib

MLlib (Machine Learning Library) est un module Spark qui vous permet d'entraîner des modèles d'apprentissage automatique avec des données stockées dans un système de fichiers distribué tel que HDFS.

Cela permet de générer des modèles sur des ensembles de données ou des ensembles de données comportant des millions et des millions d'entrées, augmentant ainsi la précision du modèle.

Certaines des tâches d'apprentissage automatique qui peuvent être effectuées avec MLlib sont :

  • Régression
  • Classification
  • Analyse des valeurs fondamentales
  • Algorithmes basés sur des arbres de décision
  • Ingénierie des données
  • Nettoyage des données