Premiers pas avec mapreduce
Installation ou configuration
Mapreduce fait partie de Hadoop. Ainsi, lorsque Apache Hadoop (ou toute distribution de Hadoop est installée), MR est automatiquement installé.
MapReduce est le framework de traitement de données sur HDFS (système de fichiers distribué Hadoop). Les tâches MR peuvent être écrites en Java, Python, Scala, R, etc.
Que fait mapreduce et comment ?
Mapreduce est un modèle de programmation permettant de traiter de (très) grandes quantités de données.
Le « HPC » traditionnel (calcul haute performance) accélère les calculs importants sur des quantités de données relativement importantes en créant un ensemble d’ordinateurs hautement connectés (utilisant des éléments tels que la mise en réseau extrêmement rapide et un accès rapide au stockage partagé, à la mémoire partagée) pour gérer les problèmes informatiques qui nécessitent généralement des calculs pour avoir accès aux données des autres. Un exemple classique est la prévision météorologique.
Mapreduce, d’autre part, excelle dans la gestion de calculs relativement petits et indépendants sur d’énormes quantités de données. Pour rendre cela possible, les données sont réparties sur de nombreux ordinateurs (en raison de la quantité de données), et le calcul souhaité est divisé en une phase qui peut être effectuée sur chaque bit de données indépendamment (la phase «carte»). Les résultats de ces calculs indépendants sont ensuite rassemblés et une deuxième partie des calculs est effectuée pour combiner tous ces résultats individuels dans le résultat final (la phase de “réduction”).
Exemple : Comptage des votes
Imaginez que vous ayez un très grand nombre de votes à compter et qu’il y ait un peu de travail pour compter chaque vote (par exemple, découvrir à partir de l’image numérisée quelle case a été cochée).
Dans ce cas, une implémentation de mapreduce :
## Étape 1 : « Répartir » ##
Répartissez les images à traiter sur les ordinateurs disponibles.
Étape 2 : “Carte”
Sur chaque ordinateur, pour chaque image :
- prendre en entrée 1 des images copiées sur cet ordinateur
- savoir quelle case a été cochée
- afficher le numéro (ou le code ou le nom) de l’élément voté pour
Notez que le travail peut commencer dès qu’un ordinateur obtient 1 image pour fonctionner sur. Il n’est pas nécessaire que tous ces ordinateurs interagissent pour faire leur travailler, il n’est donc pas nécessaire qu’ils soient interconnectés rapidement, aient partagé mémoire ou espace disque partagé.
Étape 3 : “Rassemblez”
Rassemblez toutes ces sorties sur 1 ordinateur.
Étape 4 : “Réduire”
Comptez le nombre de votes pour chaque numéro (ou code ou nom).
Cet exemple très basique montre également à quel point des optimisations supplémentaires sont souvent possibles. Dans ce cas, l’étape de réduction elle-même peut clairement être effectuée partiellement sur chaque ordinateur, puis une réduction finale peut être effectuée sur un ordinateur central. Cela réduira à la fois la quantité de travail sur l’ordinateur exécutant l’étape de réduction et limitera la quantité de données devant être transportées sur le réseau.
Exemple : Comptage des votes - optimisé (en utilisant le combinateur)
## Étape 1 : « Répartir » ##
Comme avant : Répartissez les images à traiter sur les ordinateurs disponibles.
Étape 2 : “Carte”
Comme avant : Sur chaque ordinateur, pour chaque image :
- prendre en entrée 1 des images copiées sur cet ordinateur
- savoir quelle case a été cochée
- afficher le numéro (ou le code ou le nom) de l’élément voté pour
Étape 3 : “Rassemblez” localement
Rassemblez toutes les sorties d’un ordinateur sur l’ordinateur lui-même.
Étape 4 : “Réduire” localement
Comptez le nombre de votes de chaque numéro (ou code ou nom) dans les résultats locaux et affichez ces décomptes.
## Étape 5 : « Regrouper » globalement ##
Rassemblez toutes les sorties des réductions locales sur 1 ordinateur.
Étape 6 : “Réduire” globalement
Faites la somme des décomptes de votes effectués localement pour chaque numéro (ou code ou nom).
Notez qu’à l’étape 3, il n’est pas nécessaire d’attendre tous les résultats dans l’un des cas ci-dessous :
- si cela devient trop pour les ressources locales de l’ordinateur comme le stockage/la mémoire
- si le coût des travaux à refaire lors d’une panne d’ordinateur est jugé trop important pour attendre tous les résultats locaux
- si le réseau est désormais libre de transporter les résultats intermédiaires
la collecte locale et la réduction locale peuvent être effectuées sur les résultats produits jusqu’à présent sur l’ordinateur local, et cela peut être fait à tout moment.
L’étape de réduction locale est appelée étape de combinateur. Il s’agit d’une étape facultative utilisée pour améliorer les performances.