Un jeu de données distribué résilient (RDD) est un ensemble d’éléments non modifiables et tolérants aux pannes qui peuvent être distribués sur plusieurs nœuds de cluster pour être traités en parallèle. Les RDD constituent la structure de données de base du moteur de traitement de données open source Apache Spark.
Spark a été développé pour combler les lacunes de MapReduce, un modèle de programmation destiné à « fragmenter » une tâche de traitement de données de grande ampleur en tâches parallèles plus petites.
MapReduce peut être lent et inefficace. Il implique des processus de réplication (conservation de plusieurs copies de données à différents emplacements), de sérialisation (coordination de l’accès aux ressources utilisées par plusieurs programmes) et des E/S importantes (entrée/sortie du stockage sur disque).
Spark réduit spécifiquement les processus de traitement inutiles. Alors que MapReduce écrit des données intermédiaires sur le disque, Spark utilise des RDD pour mettre en cache et calculer les données en mémoire. De ce fait, le moteur d’analyse de Spark peut traiter les données 10 à 100 fois plus rapidement que MapReduce.1
Apache Spark est un moteur de traitement de données à grande échelle rapide et open source. Il est souvent utilisé pour les applications de machine learning (ML) et d’intelligence artificielle (IA). Spark peut être considéré comme une amélioration d’Hadoop, ou plus précisément de son cadre de traitement de données natif MapReduce.
Spark monte en charge en répartissant les workflows de traitement de données sur de grands clusters d’ordinateurs, avec une prise en charge intégrée des calculs parallèles sur plusieurs nœuds et la tolérance aux pannes.
Il comprend des interfaces de programmation d’applications (API) pour les langages de programmation couramment utilisés en science des données et en ingénierie des données, notamment Java, Python (PySpark), Scala et R.
Spark utilise des RDD pour gérer et traiter les données. Chaque RDD est divisé en partitions logiques, qui peuvent être calculées simultanément sur différents nœuds de cluster. Les utilisateurs peuvent effectuer deux types d’opérations RDD : les transformations et les actions.
Spark effectue les transformations et les actions sur les RDD en mémoire : la clé de la vitesse de Spark. Spark peut également stocker les données en mémoire ou les écrire sur disque pour une persistance accrue.
Comme leur nom l’indique, les RDD sont résilients et distribués. En d’autres termes :
Les RDD sont « résilients » parce qu’ils suivent les informations de traçabilité des données afin que les données perdues puissent être reconstruites en cas de défaillance, ce qui les rend hautement tolérants aux pannes.
À titre d’exemple de cette résilience des données, considérons un cœur d’exécutant (executor) perdu lors du traitement d’une partition RDD. Le contrôleur détecterait cette défaillance et la partition serait réaffectée à un autre cœur de l’exécutant.
Les RDD sont « distribués » parce qu’ils sont divisés en groupes de données plus petits qui peuvent être distribués vers différents nœuds de calcul et traités simultanément.
Outre ces deux caractéristiques fondamentales, les RDD possèdent d’autres caractéristiques qui contribuent à leur importance et aux opérations dans Spark.
De nombreux cadres de traitement de données, MapReduce en particulier, doivent effectuer de multiples opérations de lecture ou d’écriture à partir de systèmes de stockage externes , ce qui ralentit leurs performances. Avec les RDD, Apache Spark résout ce problème.
Les RDD réduisent les E/S de disque en utilisant des calculs en mémoire qui stockent les résultats intermédiaires des opérations itératives dans la mémoire vive (RAM). L’utilisation des calculs et du stockage en mémoire peut permettre un accès plus rapide aux données et un traitement en temps quasi réel.
Les RDD peuvent également accélérer l’entraînement des algorithmes de machine learning et le traitement des analyses big data à grande échelle. L’utilisation des calculs en mémoire peut réduire le temps nécessaire pour accéder au stockage de données.
Dans Spark, toutes les transformations (opérations appliquées pour créer un nouveau RDD) sont « paresseuses », c’est-à-dire que les données ne sont pas chargées ou calculées immédiatement.
Au lieu de cela, les transformations sont suivies dans un graphe orienté acyclique (DAG) et exécutées uniquement en présence d’un appel à l’action spécifique pour un programme contrôleur.
Le programme contrôleur dirige la fonction et les opérations principales du calcul de cluster sur les tâches Spark, telles que l’agrégation, la collecte, le comptage ou l’enregistrement des résultats dans un système de fichiers.
Parmi les dizaines d’actions et de transformations possibles, citons aggregateByKey, countByKey, flatMap, groupByKey, reduceByKey et sortbyKey.
L’évaluation paresseuse optimise les pipelines de traitement des données en éliminant les processus de traitement superflus et en éliminant les calculs inutiles.
Spark partitionne automatiquement les RDD sur plusieurs nœuds afin de pouvoir traiter d’énormes volumes de données qui ne tiendraient pas sur un seul nœud. Pour éviter toute corruption, chaque partition est stockée sur un nœud plutôt que distribuée sur plusieurs nœuds.
Les RDD permettent aux organisations de définir l’emplacement des partitions de calcul afin que les tâches puissent s’exécuter à proximité des données requises. Ceci permet d’augmenter la vitesse de traitement.
En outre, le nombre d’exécutants (ordinateurs qui exécutent les tâches attribuées par le contrôleur) dans le cluster peut être augmenté pour accroître le parallélisme dans le système. Le niveau de parallélisme des résultats dépend de la quantité de partitions dans le RDD parent.
Les RDD peuvent être créés dans des partitions logiques sur un cluster pour permettre l’exécution d’opérations parallèles sur plusieurs nœuds. Les RDD peuvent être créés à partir de diverses sources de stockage stables, telles qu’Amazon Web Services (AWS) S3, Hadoop Distributed File System (HDFS), Apache HBase et Cassandra. Ils peuvent également être créés à l’aide de langages de programmation tels que Scala et Python.
Les RDD Spark peuvent mettre en cache des jeux de données en mémoire pour les différentes opérations. Chaque nœud peut stocker les partitions qu’il a calculées en mémoire et les réutiliser pour des actions ultérieures sur le jeu de données ou les jeux de données qui en résultent. Cette persistance peut accélérer considérablement le traitement.
Spark offre également des options de stockage interactif aux utilisateurs, leur permettant de contrôler le mode de stockage des données. Les données peuvent être stockées en mémoire, sur disque ou les deux.
Les RDD sont immuables, ce qui signifie qu’ils ne peuvent pas être modifiés après leur création. Cette immuabilité permet de maintenir la stabilité des données tout au long des opérations.
Cela facilite également le partage des données entre plusieurs processus et contribue à les protéger contre toute corruption pouvant résulter de mises à jour simultanées à partir de différents threads.
Si les RDD ne sont pas modifiables, les utilisateurs peuvent créer de nouveaux RDD en appliquant des transformations aux RDD existants, leur permettant de mettre à jour les jeux de données sans modifier les données d’origine.
Les RDD peuvent traiter des données structurées et non structurées. Lors du traitement de données non structurées, les informations peuvent être tirées de plusieurs types de bases de données, de flux de médias ou de fichiers texte sans qu’il soit nécessaire d’utiliser de schéma fixe ou de créer un DataFrame.
Cela dit, les utilisateurs peuvent créer des DataFrames dans Spark, ce qui leur permet de profiter de certaines optimisations pour améliorer les performances.
Élaborez une stratégie de gestion des données qui élimine les silos, réduit la complexité et améliore la qualité des données pour offrir une expérience client et collaborateur exceptionnelle.
Watsonx.data vous permet d’adapter le dimensionnement des analyses et de l’IA à toutes vos données, où qu’elles se trouvent, grâce à un entrepôt de données ouvert, hybride et gouverné.
Avec IBM Consulting, exploitez les données de votre entreprise et développez une organisation basée sur les informations pour tirer des avantages métier.
1 Apache Spark, Apache Software Foundation, 20 décembre 2024.