Cadriciels de traitement des mégadonnées
Les cadriciels de mégadonnées permettent aux programmeurs de traiter des ensembles de données bien plus volumineux que ce qu'une seule machine pourrait gérer, en exprimant les calculs sous forme de flux de données parallèles que l'environnement d'exécution distribue et rend tolérants aux pannes.
Definition
Un cadriciel de traitement des mégadonnées est un système qui permet à un programmeur d'exprimer un calcul sur un très grand ensemble de données sous forme d'opérateurs de flux de données de haut niveau, et qui partitionne automatiquement les données, planifie l'exécution parallèle sur un cluster et tolère les défaillances des nœuds.
Scope
Ce sujet couvre le modèle de programmation par flux de données pour le traitement des données à l'échelle d'un cluster : le paradigme MapReduce et ses limites, les moteurs de flux de données en mémoire basés sur des ensembles de données distribués résilients, et le traitement unifié par lots et en continu avec fenêtrage, sémantique de temps d'événement et garanties d'exécution unique (exactly-once). Il aborde la manière dont les données massives, potentiellement illimitées, sont partitionnées, traitées en parallèle et récupérées après des défaillances.
Core questions
- Comment un calcul sur des données trop volumineuses pour une seule machine peut-il être exprimé et exécuté en parallèle ?
- Comment les moteurs en mémoire et de flux améliorent-ils le MapReduce par lots ?
- Comment l'exactitude, la latence et la tolérance aux pannes sont-elles équilibrées pour les flux illimités et désordonnés ?
Key theories
- MapReduce
- MapReduce exprime le traitement des données comme une étape de mappage (map) qui transforme les enregistrements en paires clé-valeur et une étape de réduction (reduce) qui agrège par clé, l'environnement d'exécution gérant la parallélisation, le brassage des données (data shuffling) et la réexécution des tâches échouées.
- Resilient distributed datasets
- Les RDDs (Resilient Distributed Datasets) fournissent une abstraction en mémoire tolérante aux pannes dont la lignée de transformations déterministes permet de recalculer les partitions perdues, ce qui rend le calcul itératif et interactif en cluster beaucoup plus rapide que MapReduce basé sur disque.
- Unified batch and stream dataflow
- Les moteurs modernes traitent le traitement par lots comme un cas particulier du traitement en continu, en utilisant le fenêtrage temporel des événements (event-time windowing) et les filigranes (watermarks) ainsi que des instantanés cohérents pour fournir des résultats d'exécution unique (exactly-once) sur des données illimitées et désordonnées.
Clinical relevance
Ces cadriciels traitent les données sous-jacentes aux pipelines de recherche, d'analyse, de recommandation et d'apprentissage automatique. Les moteurs de flux alimentent la surveillance en temps réel et les applications événementielles, ce qui en fait une infrastructure essentielle pour le calcul intensif de données.
History
L'article de Google sur MapReduce de 2004 (révisé en 2008) a établi le traitement des données à l'échelle d'un cluster ; les ensembles de données distribués résilients (resilient distributed datasets) de Spark (2012) ont apporté un traitement rapide en mémoire et itératif ; et des systèmes comme Flink et le modèle de flux de données (2015) ont unifié le traitement par lots et en continu avec de solides garanties de correction.
Debates
- Le traitement par lots versus le traitement en continu comme modèle de traitement principal
- Le traitement par lots est plus simple et facile à rendre d'exécution unique (exactly-once) mais ajoute de la latence, tandis que le traitement en continu offre une faible latence au prix d'une correction plus difficile avec des données désordonnées ; les moteurs unifiés soutiennent que le traitement en continu peut englober le traitement par lots, bien que ce dernier reste courant pour les tâches historiques volumineuses.
Key figures
- Jeffrey Dean
- Sanjay Ghemawat
- Matei Zaharia
- Tyler Akidau
Related topics
Seminal works
- dean2008
- zaharia2012
- akidau2015
Frequently asked questions
- Pourquoi Spark et les systèmes similaires ont-ils supplanté le MapReduce classique pour de nombreuses charges de travail ?
- MapReduce écrit les résultats intermédiaires sur disque entre chaque étape, ce qui est lent pour les algorithmes itératifs. Les abstractions en mémoire comme les ensembles de données distribués résilients (resilient distributed datasets) conservent les données en mémoire entre les étapes et ne recalculent que les partitions perdues en cas de défaillance, ce qui permet des accélérations importantes pour l'analyse itérative et interactive.