Aller au contenu

Lancer le cluster Hadoop / Spark

Tous les TPs Hadoop et Spark de ce site utilisent le même mini-cluster, fourni sous forme d’un conteneur Docker contenant :

  • 1 master (NameNode HDFS, ResourceManager YARN, Spark Master)
  • 2 slaves (DataNodes HDFS, NodeManagers YARN)

Image officielle : stephanederrode/docker-cluster-hadoop-spark-python:5.0 Versions : Hadoop 3.5.0, Spark 4.1.1, OpenJDK 17, Python 3.

Cette page est la seule source de vérité pour lancer le cluster.

Tous les TPs y renvoient. Si quelque chose change ici, ça se répercute partout.


1⃣ Pré-requis

  • Docker Desktop installé et lancé (Mac, Windows ou Linux). Téléchargement officiel.
  • Au moins 8 Go de RAM allouée à Docker (Settings → Resources → Memory). 12 Go ou plus pour bénéficier du profil 16GB.
  • Au moins 12 à 15 Go d’espace disque libre (image ~4-5 Go + couches Docker + volumes HDFS).
  • Git installé (pour cloner le repo).

Si ta machine est trop juste

Travaille à deux avec un voisin, ou réalise les exercices en local quand c’est possible (la première partie du wordcount Hadoop natif, par exemple).


2⃣ Récupérer le repo

Une fois pour toutes, clone le repo qui contient le docker-compose.yml, les fichiers de TP et les scripts utilitaires :

git clone https://gitlab.ec-lyon.fr/sderrode/hadoop-cluster-docker.git
cd hadoop-cluster-docker

3⃣ Démarrer le cluster

Une seule commande, identique sur Mac, Linux et Windows (PowerShell ou WSL) :

docker compose up -d

À la première exécution, l’image (~3 Go) se télécharge depuis Docker Hub, puis les 3 conteneurs démarrent. Hadoop (HDFS + YARN) démarre automatiquement sur le master après que les slaves soient prêts.

Entrer dans le master :

docker compose exec hadoop-master bash

Vérifier que tout est OK avec le script fourni :

check-cluster.sh

Tu dois voir tous les processus marqués : NameNode, ResourceManager, SecondaryNameNode sur le master ; DataNode, NodeManager sur chaque slave ; HDFS et YARN opérationnels.


4⃣ Interfaces web

Une fois le cluster lancé, ouvre dans ton navigateur :

URL Service
http://localhost:9870 HDFS NameNode UI (état du système de fichiers)
http://localhost:8088 YARN ResourceManager UI (jobs en cours, historique)
http://localhost:8042 NodeManager UI du slave 1
http://localhost:8043 NodeManager UI du slave 2
http://localhost:4040 UI d’une application Spark en cours d’exécution (4041, 4042… si plusieurs jobs simultanés)


5⃣ Édition des fichiers

Le dossier filesForTP/ du repo est monté en volume dans le master :

Sur ta machine Dans le conteneur
filesForTP/TP_Hadoop/ /root/TP_Hadoop
filesForTP/TP_Spark/ /root/TP_Spark

Conséquence : tu édites tes scripts dans VS Code (ou n’importe quel éditeur) sur ton OS, et ils sont immédiatement visibles dans le conteneur. Plus besoin de docker cp !

Utilisateurs Windows

Si tu modifies un script .py ou .sh sous Windows et qu’il refuse de s’exécuter dans le conteneur (erreur bad interpreter, ^M…), c’est un problème de fin de ligne. Convertis le fichier dans le conteneur :

dos2unix /root/TP_Hadoop/wordcount/wc_mapper.py


6⃣ Arrêter le cluster

docker compose down            # arrêt propre, données HDFS conservées
docker compose down -v         # arrêt + suppression des données HDFS (repart de zéro)

Pour relancer après un arrêt simple : docker compose up -d. Les données HDFS sont retrouvées telles quelles.


⚠ Quelque chose ne fonctionne pas ?

Voir la FAQ Dépannage.