
Dans le modèle MapReduce, quelle est la sortie attendue de la fonction Reduce pour la clé "I" après le comptage des mots d'un texte ?
Quel problème de conception de MapReduce peut entraîner une baisse de performance lorsqu'une tâche Reduce dépend d'une grande quantité de données intermédiaires ?
Lors d'une défaillance d'un worker, quelle action le maître effectue-t-il pour garantir la continuité du traitement ?
Quelle fonction de partitionnement par défaut est utilisée par Hadoop pour distribuer les paires intermédiaires aux tâches Reduce ?
Quel avantage principal MapReduce offre-t-il par rapport aux bases de données parallèles traditionnelles selon le texte ?
Dans l'exemple du comptage de mots, quel type de donnée intermédiaire est émis par la fonction Map pour chaque mot rencontré ?
Quel facteur influence le placement d'une tâche Map sur un nœud afin de minimiser le trafic réseau, selon le texte ?
Quel est le rôle principal du JobHistoryServer dans l'architecture MapReduce ?
Dans le processus MapReduce, pourquoi le nombre de tâches Map (M) et Reduce (R) doit généralement être bien supérieur au nombre de machines du cluster ?
MapReduce et l'écosystème Hadoop
Catégorie : Informatique
Ce cours détaillé vous guide à travers les concepts fondamentaux de MapReduce et de son intégration dans l'écosystème Hadoop. Vous découvrirez le rôle des différents composants, le flux de travail typique d'un job MapReduce, les mécanismes de tolérance aux pannes, ainsi que les meilleures pratiques pour optimiser les performances. Chaque section s'appuie sur des questions d'examen courantes, afin de consolider votre compréhension et d'améliorer votre visibilité SEO grâce à un contenu riche et structuré.
1. Architecture de base de Hadoop
Hadoop repose sur deux services majeurs : le HDFS (Hadoop Distributed File System) pour le stockage, et le moteur MapReduce pour le traitement distribué. Le JobTracker joue un rôle central dans la gestion des jobs :
- Il planifie la répartition des tâches Map et Reduce sur les nœuds du cluster.
- Il surveille l'état des ressources (CPU, mémoire, bande passante) et assure le suivi des tâches en cours.
- En cas de défaillance d'un worker, il déclenche la relance des tâches affectées.
Contrairement aux composants comme NameNode (gestion du namespace HDFS) ou TaskTracker (exécution locale des tâches), le JobTracker orchestre l'ensemble du processus de calcul.
2. Le modèle MapReduce expliqué
Le modèle se compose de deux fonctions principales :
- Map : transforme chaque enregistrement d'entrée en une ou plusieurs paires
<clé, valeur>. - Reduce : agrège toutes les valeurs associées à une même clé pour produire le résultat final.
Dans l'exemple classique du comptage de mots, la fonction Map émet une paire <mot, "1"> pour chaque occurrence du mot. La fonction Reduce additionne ces "1" pour chaque clé (mot).
Par exemple, pour la clé "I", si le texte contient deux occurrences, la sortie attendue du Reduce sera <"I", 2>.
3. Optimisation et problèmes de conception
Un problème fréquent de conception réside dans le blocage des fonctions map() et reduce() jusqu'à la fin de chaque phase. Lorsque la tâche Reduce dépend d'une grande quantité de données intermédiaires, cela peut entraîner une baisse de performance notable, car le shuffle doit transférer d'énormes volumes de données avant que le Reduce ne commence.
Pour atténuer ce problème, on utilise généralement une fonction de combinaison (Combiner) : elle agit comme un mini‑Reduce exécuté localement sur chaque nœud, pré‑agrégeant les paires <clé, valeur> avant le shuffle. Cela réduit le trafic réseau et accélère le traitement.
4. Tolérance aux pannes et redondance
Lorsque qu'un worker échoue, le JobTracker réinitialise les tâches de map terminées sur ce nœud et les rend éligibles pour d'autres workers. Les données intermédiaires sont généralement stockées de façon redondante (réplication HDFS) afin que les tâches puissent être relancées sans perte d'information.
Cette stratégie garantit la continuité du traitement et minimise l'impact d'une défaillance matérielle sur le temps total d'exécution du job.
5. Partitionnement des données intermédiaires
Par défaut, Hadoop utilise la fonction de partitionnement hash(clé) mod R, où R représente le nombre de reducers. Cette méthode assure une distribution équilibrée des paires <clé, valeur> entre les reducers, tout en restant simple à implémenter.
Il est possible de personnaliser ce partitionneur pour des cas d'usage spécifiques (par exemple, garantir que certaines clés se retrouvent toujours sur le même reducer).
6. Avantages de MapReduce par rapport aux bases de données parallèles
Le principal avantage de MapReduce réside dans sa capacité à gérer les pannes de manière transparente tout en permettant l'exécution de code procédural sur tout type de données (texte, logs, images, etc.). Contrairement aux bases de données parallèles traditionnelles, qui exigent souvent des schémas fixes et des requêtes SQL, MapReduce offre une flexibilité maximale pour le traitement de données non structurées.
Cette robustesse, combinée à la scalabilité horizontale du cluster Hadoop, en fait un choix privilégié pour les gros volumes de données (big data).
7. Placement des tâches Map et optimisation du trafic réseau
Le placement d'une tâche Map est influencé par la proximité d'une réplica du bloc d'entrée sur le nœud cible. Hadoop privilégie le « data locality » : si le bloc de données est déjà présent sur le nœud, la tâche Map s'exécute localement, réduisant ainsi le trafic réseau et améliorant les performances.
Cette stratégie minimise les coûts de transfert de données entre les nœuds et exploite pleinement la bande passante interne du cluster.
8. Synthèse et bonnes pratiques
- Utilisez le JobTracker pour orchestrer les jobs et surveiller les ressources.
- Émettez des paires
<clé, "1">dans la phase Map du comptage de mots. - Implémentez un Combiner pour réduire le volume de données pendant le shuffle.
- Profitez du partitionnement
hash(clé) mod Rpour équilibrer la charge entre les reducers. - Assurez la data locality en plaçant les tâches Map près des réplications de blocs.
- En cas de panne, comptez sur le JobTracker pour relancer les tâches et récupérer les données intermédiaires.
En suivant ces recommandations, vous optimiserez vos jobs MapReduce, garantirez la résilience du traitement et tirerez le meilleur parti de l'écosystème Hadoop.
