Lab 3
Lab 3
Lab 3
BIG Data
Lab 3 : MapReduce
Map-Reduce
Exploration de Map-reduce (5WH) :
o Quoi:
Framework de traitement MapReduce dans Hadoop : Hadoop est un écosystème logiciel open source qui
prend en charge le stockage et le traitement distribués de données volumineuses. Dans le contexte de
Hadoop, le framework MapReduce est une implémentation spécifique du modèle de programmation
MapReduce. Il fournit un environnement de traitement distribué qui permet d'exécuter des programmes
MapReduce sur un grand cluster de machines. Le framework MapReduce de Hadoop gère la répartition des
tâches, l'ordonnancement, la gestion des erreurs, et la récupération en cas de défaillance, offrant ainsi une
solution évolutive pour le traitement de données massives.
Un job MapReduce est une unité de travail dans le modèle de programmation et de traitement de données
distribuées appelé MapReduce. C'est un concept clé dans les systèmes qui utilisent cette approche pour
traiter de grandes quantités de données parallèlement et de manière distribuée. L'architecture MapReduce
est souvent utilisée dans des environnements comme Apache Hadoop.
Un job MapReduce se compose généralement de deux phases principales : la phase de "map" et la phase de
"reduce".
Phase Map : Dans cette phase, les données d'entrée sont divisées en blocs et distribuées à plusieurs nœuds
de calcul. Chaque nœud exécute une fonction de map spécifiée par le développeur. Cette fonction prend une
paire clé-valeur en entrée et produit une liste de paires clé-valeur intermédiaires.
Shuffling and Sorting : Les paires clé-valeur intermédiaires produites par les différentes tâches de map sont
triées et regroupées par clé. Cela permet de regrouper toutes les valeurs associées à une même clé dans une
liste.
Phase Reduce : Les données regroupées sont ensuite envoyées à différentes tâches de reduce. Chaque tâche
de reduce prend une clé et la liste de ses valeurs associées en entrée, puis effectue une opération de
réduction spécifiée par le développeur pour produire une nouvelle paire clé-valeur.
o Qui :
Développé par Google : MapReduce a été introduit par Google pour traiter
efficacement des données sur ses infrastructures massivement distribuées.
Utilisé par les grands acteurs du Web notamment pour : construire les index
(Google Search), détection de spam (Yahoo), Data Mining (Facebook), ...
Autre utilisateurs :
- De l'analyse d'images astronomique, de la bio-informatique, de la simulation
métrologique, des statistiques, etc.
- Le calcul de la taille de plusieurs milliers de documents.
- Trouver le nombre d'occurrences d'un pattern dans un très grand volume de
données.
- Classifier de très grands volumes de données provenant par exemple de paniers
d'achats de clients (Data Mining)
o Où:
Utilisé dans des clusters informatiques : MapReduce est déployé sur des
clusters de serveurs, généralement au sein de centres de données, pour traiter des
données de manière parallèle.
o Quand :
Conçu dans les années 2000 : MapReduce a été initialement présenté dans un
document de recherche de Google en 2004 et a depuis été adopté et étendu par
d'autres systèmes, notamment dans le cadre du projet Hadoop.
o Comment :
Prétraitement (Pre-Process):
Nettoyer les données en entrée en éliminant la ponctuation, en normalisant les caractères
accentués, et en convertissant l'ensemble du texte en minuscules.
Découpage (Split) :
Fragmenter les données en plusieurs morceaux ou lots, généralement en les divisant ligne
par ligne, pour faciliter le traitement parallèle.
Mapping (Map) :
Créer des paires clé-valeur à partir des données en entrée. Souvent, cela se traduit par
l'association de chaque mot avec le nombre d'occurrences, générant ainsi des couples (mot,
nombre d'occurrences).
Regroupement (Shuffle) :
Rassembler toutes les paires ayant la même clé (grouper par clé) et les transmettre au même
réducteur. Ce processus d'agrégation produit des résultats intermédiaires.
Réduction (Reduce) :
Fusionner les groupes indexés par clé en une forme finale. Par exemple, additionner toutes
les valeurs associées à une clé, ce qui aboutit à la production du résultat final.
Exemple :
Architecture du Map-Reduce :
JobTracker :
Réserver et ordonnancer les slots.
Coordonner l’exécution des Jobs Map-Reduce.
Gérer les fautes en réallouant les slots au besoin.
TaskTracker :
Exécuter les tâches de Map-Reduce.
Traite en général les blocs qui se trouvent la même
machine(DataNode) que lui d’une tâche (Map ou Reduce)
o Pourquoi :
Exercices de Coursera :
touch wordcount_mapper.py
touch wordcount_reducer.py
2. Ajout des contenus aux fichiers:
vim wordcount_mapper.py
vim wordcount_reducer.py
Une fois que le fichier est ouvert dans Vim, on est initialement en mode normal. On
appuye sur la touche "i" pour entrer en mode édition. On voit "INSERT" en bas de la
fenêtre et on colle le contenu des codes python.
Pour enregistrer les modifications, on appuye sur la touche "Esc" pour revenir au
mode normal. Ensuite, tapez ":wq" et appuyez sur "Entrée". Cela enregistre les
modifications et quitte Vim.
Aperçu sur les codes : wordcount_mapper.py
Le but général de ce script est de prendre des lignes d'entrée, de les diviser en mots
(ou clés), et pour chaque mot, de produire une paire clé-valeur où la clé est le mot
luimême et la valeur est toujours égale à 1.
wordcount_mapper.py
L’objectif général est d'agréger les valeurs associées à chaque clé en provenance de
la phase de mappage.
3. Exécution des scripts :
chmod +x wordcount_mapper.py
chmod +x wordcount_reducer.py
touch testfile1.txt
touch testfile2.txt
echo "A long time ago in a galaxy far far away" > /testfile1
echo " Another episode of Star Wars " > testfile2
/
5. Copier les fichiers des données du local vers HDFS :
On crée un répertoire sur HDFS c’est là où on va mettre nos fichiers copiés du locale :
Ces commandes copient le fichier nommé "testfile1" et " testfile1" depuis le répertoire
racine ("/") de votre système de fichiers local vers le répertoire HDFS
/user/cloudera/input.
Ces lignes sont des messages de journal (logs) générés lors de l'exécution d'un travail
MapReduce dans le framework Hadoop. Ces messages fournissent des informations
sur la progression du travail.
Au début du travail, aucun des mappers ou reducers n'a encore commencé son travail.
Les pourcentages de complétion sont à 0%.Ensuite, ona tous les mappers ont terminé
leur travail. Enfin, tous les reducers ont également terminé C'est à ce stade que le
travail MapReduce est entièrement terminé.
Ces messages sont utiles pour surveiller la progression d'un travail MapReduce et
diagnostiquer d'éventuels problèmes s'ils surviennent pendant l'exécution.
Cette commande affiche le contenu du premier fichier (part-00000) produit par le job
MapReduce dans le répertoire de sortie. Dans un job MapReduce, les résultats
peuvent être répartis en plusieurs fichiers de sortie, généralement nommés "part-xxxxx"
où "xxxxx" est une partie spécifique. Le fichier part-00000 est généralement le premier
et le seul fichier puisqu’on a pas assez de données à traités.
Cette commande est utilisée pour fusionner le contenu des fichiers de sortie générés
par le travail Hadoop sans tâches de réduction en un seul fichier sur le système de
fichiers local.
9. Changer le nombre de Reducers :
On Change le nombre de reducers à 2 :
Autres exercices :
o Exercice 1 :
Les données associées à chaque ville seront traitées indépendamment par chaque mapper.
Dans le mapper on met :
C’est pareil pour Reducer on met le code suivant :
| (pipe) : Cet opérateur de pipe prend la sortie (stdout) de la première commande (cat)
et la transmet comme entrée (stdin) à la deuxième commande (python mapper1.py).