Dépannage (FAQ)¶
Page rassemblant les erreurs les plus fréquentes que les étudiants rencontrent. Si ton problème n’y est pas, contacte ton enseignant en décrivant précisément :
- La commande que tu as tapée.
- Le message d’erreur complet (capture d’écran ou copier-coller).
- Ton OS (Mac / Windows / Linux) et la version de Docker Desktop.
Démarrage du cluster¶
docker compose: command not found
Tu utilises sans doute une vieille version de Docker. La commande historique est docker-compose (avec un tiret). Mais elle est dépréciée. Mets à jour Docker Desktop (≥ v20.10).
Cannot connect to the Docker daemon
Le démon Docker ne tourne pas. Lance l’application Docker Desktop et attends que la baleine soit verte/grise (pas orange) avant de retenter.
port is already allocated (par exemple sur 9870, 8088…)
Un autre programme occupe déjà ce port sur ta machine. Deux solutions :
- Identifier et fermer le programme qui l’utilise. Sur Mac/Linux :
lsof -i :9870. Sur Windows (PowerShell) :Get-NetTCPConnection -LocalPort 9870. - Modifier
docker-compose.ymlet changer le port côté hôte uniquement (avant les:). Par exemple :"19870:9870"→ tu accèderas à http://localhost:19870.
Le docker compose up se termine mais check-cluster.sh montre des ✗
- Attends 30-60 secondes : Hadoop met du temps à se stabiliser au premier boot.
- Relance
check-cluster.sh. - Si toujours en erreur :
docker compose logs hadoop-master | tail -50pour voir ce qui s’est passé au démarrage. - En dernier recours, repars de zéro :
docker compose down -v && docker compose up -d.
HDFS¶
Cannot create directory ... Name node is in safe mode
Au démarrage, le NameNode passe en mode “safe” le temps de vérifier les blocs. Attends ~30s. Si le problème persiste :
hdfs dfs -put échoue avec could only be written to 0 of the 1 minReplication nodes
Les DataNodes ne sont pas joignables par le NameNode. Vérifie avec check-cluster.sh. Souvent dû à un slave qui n’a pas démarré à temps ou qui a planté → docker compose restart hadoop-slave1 hadoop-slave2.
Mes données HDFS ont disparu après docker compose down -v
C’est normal : -v supprime les volumes (donc les données HDFS persistées). Pour conserver les données entre deux sessions, utilise simplement docker compose down (sans -v).
SSH entre master et slaves¶
ssh: connect to host hadoop-slave1 port 22: Connection refused
Le service SSH du slave n’est pas (encore) prêt. Attends quelques secondes ou redémarre :
Permission denied (publickey) quand le master tente de se connecter aux slaves
Les clés SSH sont normalement embarquées dans l’image (la même clé sur master et slaves). Si tu as modifié l’image, tu as cassé cette propriété. Repars de l’image officielle : docker compose pull && docker compose up -d.
Ressources de la machine hôte¶
Mon ordinateur rame, le ventilateur s’emballe
Hadoop + Spark consomment de la RAM et du CPU. Sur Mac/Windows :
- Docker Desktop → Settings → Resources → Memory : alloue au moins 8 Go (12 Go si possible).
- Ferme les applications gourmandes (navigateurs avec 50 onglets, IDE, etc.).
- Le profil mémoire est auto-détecté ; tu peux forcer le mode léger :
MEMORY=8GB docker compose up -d.
OutOfMemoryError: Java heap space lors d’un job
Le job demande plus de mémoire que YARN ne peut allouer. Soit :
- Réduis la taille des données traitées.
- Force le profil
16GBsi ta machine a la RAM (MEMORY=16GB docker compose up -d). - Vérifie que tu n’as pas une boucle infinie ou une concaténation explosive dans ton script.
Spécifique à Windows¶
Mes scripts .py ou .sh édités sous Windows ne s’exécutent pas dans le conteneur
Problème de fin de ligne (CRLF Windows vs LF Unix). Dans le conteneur :
Astuce : configure VS Code pour sauvegarder en LF par défaut (Settings → Files: Eol →\n).
docker compose up est très lent / les volumes sont lents
Sur Windows, héberge le repo dans WSL2 (filesystem \\wsl$\...) et non dans C:\Users\.... Les performances de bind mount sont 10× meilleures.
Spark / PySpark¶
Trop de logs verbeux ? Comment les réduire / réactiver ?
Depuis la version 5 de l’image, la verbosité par défaut est déjà à WARN pour Spark et pour Hadoop (sauf la progression des jobs MapReduce qui reste à INFO pour rester visible). Tu n’as donc rien à faire dans le cas général.
Pour réactiver le mode verbeux (utile pour débugger un script qui plante en silence) :
# Spark
sed -i 's/^rootLogger.level = warn/rootLogger.level = info/' \
/usr/local/spark/conf/log4j2.properties
# Hadoop
sed -i 's/^hadoop.root.logger=WARN/hadoop.root.logger=INFO/' \
/usr/local/hadoop/etc/hadoop/log4j.properties
info → warn, INFO → WARN).
spark-submit ... --master yarn reste bloqué
Vérifie que YARN est OK : check-cluster.sh. Le mode --master yarn exige que les NodeManagers répondent.
No module named 'pyspark' dans un script Python
Tu as oublié d’utiliser spark-submit. Lance toujours avec :
python mon_script.py.