Ministère de l’Enseignement Enseignante :
Supérieur et de la Recherche Examen TP Takwa Ben Aïcha Gader
Scientifique, université de Année universitaire :
Monastir, ISIMA 2024/2025
Objectif
Tester la capacité des étudiants à implémenter et exécuter des programmes MapReduce pour
analyser un jeu de données.
Tâches à Réaliser
1. Configuration du Cluster Hadoop
a. Assurer vous que l’image Docker nécessaire pour Hadoop est déjà installée.
b. Créez un réseau Docker nommé hadoop_cluster.
c. Configurez les conteneurs comme suit :
o Nœud maître (namenode) :
▪ Nom : hadoop-master
▪ Ports exposés : 50070, 8088
o Nœuds esclaves (datanodes) :
▪ hadoop-slave1
▪ hadoop-slave2
▪ hadoop-slave3
o Connectez tous les conteneurs au réseau hadoop_cluster.
d. Copier le fichier donnees.txt dans HDFS dans un dossier /exam_mapreduce.
2. Implémentez les tâches MapReduce suivantes :
a. Tâche 1 : Comptage des professions
▪ Écrivez un programme MapReduce pour compter le nombre de personnes par profession.
Pour cela il faut créer et déplacer vers le Master les fichiers mapper.py et reducer.py.
▪ Exemples de sortie :
Ingénieur : 10
Étudiant : 15
Médecin : 5
1
c. Exécution et Validation :
▪ Testez la tâche MapReduce sur le fichier donnees.txt.
▪ Stockez les résultats dans HDFS dans les répertoires
/exam_mapreduce_output/tache1.
d. Vérifier les Job executes sur le système Hadoop par l’interface web : http://localhost:8088/
(capture d’écran)
e. Questions Théoriques :
a. Ex pliquez le rôle des fonctions map() et reduce() dans un programme
MapReduce.
b. Quels sont les avantages d'utiliser MapReduce pour traiter de grandes quantités de
données par rapport à un traitement classique ?
Critères d'Évaluation :
1. Configuration correcte du cluster Hadoop : 5 points.
2. Implémentation correcte des tâches MapReduce :5 points
3. Qualité des résultats et analyse : 2 points.
4. Clarté et présentation du rapport : 3 points.
Bonus (+3 points):
▪ Écrivez un programme MapReduce pour calculer le salaire moyen pour chaque profession.
▪ Ignorez les lignes où le salaire est 0.
▪ Exemples de sortie : Ingénieur : 65,000
Médecin : 75,000
Annexe (commandes) :
▪ Créer et lancer un conteneur Docker
➢ docker run -itd --net=<network_name> -p <host_port>:<container_port> --name
<container_name> --hostname <hostname> <image_name>
▪ Démarrer les services HDFS
➢ start-dfs.sh
▪ Modifier le facteur de réplication :
➢ hadoop fs -setrep -w <replication_factor> <file_path>
▪ Exécuter le script mapper.py sur le fichier donnees.txt (vérification)
2
➢ hdfs dfs -cat <HDFSFilePath> | python3 <MapperScript>
▪ Exécution du job MapReduce avec Hadoop Streaming
➢ hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \
-files <MapperScript>,<ReducerScript> \
-mapper "python3 <MapperScript>" \
-reducer "python3 <ReducerScript>" \
-input <HDFSInputFilePath> \
-output <HDFSOutputDirectory>