Hadoop Distributed File System
Composants · Blocs & Réplication · Simulations interactives · Travaux Pratiques · Quiz
Composants Blocs Simulation TP Quiz1 Les Composants de HDFS
Architecture HDFS — Vue d'ensemble
┌──────────────────────────────────────────────────────────────────────────┐
│ CLIENT HDFS (Shell / API Java / Spark) │
└────────────────────────────┬─────────────────────────────────────────────┘
│ ① Demande métadonnées
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ NAMENODE (Maître HDFS) │
│ ┌──────────────┐ ┌───────────────┐ ┌──────────────────────────────┐ │
│ │ FSImage │ │ EditLog │ │ Block Map (en RAM) │ │
│ │ Snapshot NS │ │ Journal ops │ │ fichier → [blocs → DNs] │ │
│ └──────────────┘ └───────────────┘ └──────────────────────────────┘ │
│ Port RPC: 9000 · UI Web: http://localhost:9870 │
└──────┬──────────────────────────────┬───────────────────────────────────┘
│ │ ② Retourne localisation des blocs
│ Checkpoint périodique ▼
┌──────▼──────────┐ ┌──────────────────────────────────────────────────┐
│ SECONDARY │ │ DATANODES (Workers) │
│ NAMENODE │ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ │ │ DataNode1 │ │ DataNode2 │ │ DataNode3 │ │
│ ⚠ N'est PAS │ │ │ Rack A │ │ Rack A │ │ Rack B │ │
│ un backup NN ! │ │ │ blkA, blkB│ │ blkA, blkC│ │ blkB, blkC│ │
│ Rôle : fusionr │ │ └───────────┘ └───────────┘ └───────────┘ │
│ FSImage+EditLog│ │ ♥ Heartbeat → NameNode (toutes les 3 secondes) │
└─────────────────┘ │ ③ Client lit/écrit DIRECTEMENT sur les DataNodes │
└──────────────────────────────────────────────────┘
NameNode MAÎTRE
Le cerveau du cluster. Ne stocke jamais de données — uniquement les métadonnées.
FSImage
Snapshot namespaceEditLog
Journal des opérationsBlock Map
En RAM- Gère l'arborescence de fichiers HDFS
- Mappe chaque fichier → blocs → DataNodes (en RAM)
- Surveille les DataNodes (heartbeats toutes les 3 s)
- Ordonne la re-réplication si un DataNode tombe
fichiers max
lookup bloc
port UI Web
SPOF — Point unique de défaillance
Si le NameNode tombe, tout HDFS est inaccessible. Solution : Mode HA avec NameNode Actif + Standby + ZooKeeper.Secondary NameNode CHECKPOINT
Idée reçue — Il N'est PAS un backup !
Si le NameNode tombe, le Secondary NameNode ne peut pas prendre le relais. Son vrai rôle : fusionner FSImage + EditLog périodiquement pour éviter que l'EditLog ne grossisse indéfiniment.Processus de checkpoint (toutes les 3600 s)
Mode HA (Hadoop 2.x+)
En Haute Disponibilité, le SNN est remplacé par un Standby NameNode synchronisé en temps réel via les JournalNodes et ZooKeeper.DataNode WORKER
Les ouvriers du cluster. Stockent physiquement les blocs et les servent directement aux clients.
Heartbeat
Toutes les 3 secondes"Je suis vivant" + métriques
Block Report
Toutes les 6 heuresListe complète des blocs
Organisation sur disque
└── BP-1234-192.168.1.10/
└── current/
├── finalized/
│ ├── blk_1073741825 ← données
│ └── blk_1073741825.meta ← CRC
└── rbw/ ← blocs en cours d'écriture
Client HDFS INTERFACE
Point d'entrée pour toutes les interactions. Le client gère lui-même le découpage et l'assemblage des blocs.
Interfaces disponibles
Commandes shell
org.apache.hadoop.fs
HTTP/HTTPS
Montage réseau
Commandes essentielles
hdfs dfs -put local.csv /hdfs/ # Upload
hdfs dfs -get /hdfs/f.csv . # Download
hdfs dfs -cat /hdfs/f.txt # Afficher
hdfs dfs -mkdir -p /user/hadoop # Créer
hdfs dfs -setrep 5 /hdfs/file # Réplication
hdfs fsck /hdfs/ -files -blocks # Santé
hdfs dfsadmin -report # Rapport cluster
2 Blocs et Stratégie de Réplication
Taille des Blocs HDFS
Hadoop 1.x
Défaut 2.x/3.x
Gros clusters
Calculateur interactif
Pourquoi 128 MB et pas 4 KB ?
- Minimise le nombre de requêtes au NameNode
- Optimise le débit séquentiel (lectures continues)
- Réduit la mémoire RAM du NameNode
- Adapté aux workloads batch (pas d'accès aléatoires)
Réplication & Rack Awareness
Placement des répliques pour ×3
R1 Nœud local (même rack que le writer)
R2 Autre nœud du même rack
R3 Nœud d'un rack différent
| Réplication | Pannes tolérées | Espace × | Usage |
|---|---|---|---|
| ×1 | Aucune | ×1 | Pseudo-distribué |
| ×2 | 1 DataNode | ×2 | Dev/Test |
| ×3 | 2 DataNodes | ×3 | Production |
| ×5 | 4 DataNodes | ×5 | Critique |
3 Simulations Interactives
4 Travaux Pratiques
TP 1 — Manipulation HDFS CLI
DébutantSur un cluster Hadoop pseudo-distribué, réalisez les opérations suivantes :
- Créer
/user/tp1/inputet/user/tp1/output - Créer un fichier
villes.txtavec 10 villes (une par ligne) - Uploader dans HDFS et vérifier la présence
- Afficher le contenu sans télécharger
- Vérifier les blocs avec
fsck - Changer la réplication à ×2
TP 2 — Calcul de capacité cluster
IntermédiaireCluster : 10 DataNodes × 4 disques × 2 TB. Bloc : 128 MB. Réplication : ×3.
- Capacité brute totale ?
- Capacité utilisable après réplication ?
- Fichier CSV de 750 MB → combien de blocs logiques ?
- Combien de blocs physiques sur le cluster ?
- 2 DataNodes tombent simultanément : données perdues ?
TP 3 — API Java HDFS
IntermédiaireÉcrivez un programme Java qui : crée un répertoire, écrit un fichier, le lit, liste le répertoire et affiche la localisation des blocs.
- Connexion à HDFS (localhost:9000)
- Créer
/user/java-api/ - Écrire un fichier texte directement en HDFS
- Lire et afficher son contenu
- Afficher les blocs et DataNodes associés
TP 4 — Diagnostic cluster
AvancéSymptômes : Live datanodes: 7 (was 10) | Under-replicated blocks: 1250 | Missing blocks: 0
- Que s'est-il passé ? Pourquoi 0 blocs manquants ?
- Que va faire HDFS automatiquement ?
- Quelles commandes pour diagnostiquer ?
- Comment accélérer la re-réplication ?