Hadoop et HDFS
Se connecter pour s'inscrireVotre progression
Syllabus
-
-
Objectifs
-
Validations de compétences
-
Public cible
Aucun public cible spécifié pour ce module.
-
Besoins techniques
-
Prérequis
- Aucun prérequis
-
Niveau
-
Historique du module
Aucune action enregistrée
-
Introduction à Hadoop & HDFS
Hadoop est un framework open-source né chez Yahoo! en 2006, conçu pour stocker et traiter d’immenses volumes de données sur des grappes de serveurs standards. Il a révolutionné la gestion du Big Data en rendant possible l’analyse de pétaoctets de données à moindre coût.
- Enjeux : traiter des données trop volumineuses ou variées pour les bases classiques, assurer la tolérance aux pannes, réduire les coûts d’infrastructure.
- Écosystème : Hadoop n’est pas seul ! Il s’intègre avec Hive, Pig, Spark, HBase, etc.
- Composants principaux :
- HDFS : système de fichiers distribué, cœur du stockage.
- MapReduce : moteur de traitement batch distribué.
- YARN : gestionnaire de ressources et d’exécution des jobs.
Hadoop a posé les bases de la data moderne et reste utilisé pour l’archivage, le batch analytique et comme socle de clusters Big Data.
-
Architecture Hadoop & HDFS
-
HDFS (Hadoop Distributed File System)
- Fonctionnement : HDFS découpe les fichiers en blocs (souvent 128 Mo) répartis sur plusieurs serveurs (DataNodes).
- NameNode : serveur maître, garde la « carte » du système (emplacement des blocs, arborescence).
- DataNode : stockent physiquement les blocs de données, exécutent les ordres du NameNode.
- Réplication : chaque bloc est copié (souvent 3 fois) pour assurer la tolérance aux pannes.
- Tolérance aux pannes : si un DataNode tombe, les données restent disponibles via les copies.
Exemple : Un fichier de 1 Go est découpé en 8 blocs de 128 Mo, chaque bloc est stocké sur 3 DataNodes différents. Si l’un tombe, le système continue de fonctionner sans perte.
-
MapReduce
- Principe : séparer le traitement en deux phases : Map (pré-traitement, découpage) puis Reduce (agrégation, synthèse).
- Étapes : chaque nœud traite une partie des données (Map), puis les résultats sont regroupés et agrégés (Reduce).
- Exemples : WordCount, calcul de statistiques, indexation de pages web.
Exemple : Pour compter les mots d’un corpus, chaque Map compte les mots dans un bloc, puis Reduce additionne les résultats de chaque Map.
-
YARN
- Gestionnaire de ressources : YARN (« Yet Another Resource Negotiator ») attribue les ressources (CPU, mémoire) aux différents jobs.
- Scheduling : permet de faire tourner plusieurs jobs Hadoop, Spark ou autres sur le même cluster.
- Interopérabilité : Spark, Hive, etc., peuvent utiliser YARN pour s’exécuter sur le cluster Hadoop.
Exemple : Une entreprise lance en parallèle un job MapReduce, une requête Hive et un pipeline Spark : YARN répartit les ressources pour optimiser l’utilisation du cluster.
-
-
Cas d’usage typiques
- Stockage de données massives
- Traitement batch distribué
- Archivage et sauvegarde
-
Exemples pratiques
1. Commandes HDFS de base
hdfs dfs -mkdir /data/mon_dossier: créer un dossier sur HDFShdfs dfs -put fichier.txt /data/mon_dossier/: uploader un fichier local vers HDFShdfs dfs -ls /data/mon_dossier: lister les fichiers d’un dossierhdfs dfs -cat /data/mon_dossier/fichier.txt: afficher le contenu d’un fichier
Ces commandes permettent de manipuler HDFS en ligne de commande, comme un système de fichiers classique mais distribué.
2. Exemple WordCount en pseudo-code MapReduce
// MAP : pour chaque ligne du texte pour chaque mot dans la ligne émettre (mot, 1) // REDUCE : pour chaque mot unique somme = 0 pour chaque valeur associée au mot somme += valeur émettre (mot, somme)Ce schéma est à la base de nombreux traitements distribués sur Hadoop.
3. Exemple WordCount Java (simplifié)
public static class Map extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } }- Mapper : découpe chaque ligne en mots, émet (mot, 1)
- Reducer : additionne les valeurs pour chaque mot
Ce programme Java est typique des premiers jobs MapReduce sur Hadoop.
-
Mini-lab Hadoop : Manipulation HDFS & MapReduce
-
Préparation
Télécharge le fichieralice.txt(texte du livre « Alice au pays des merveilles ») depuis Project Gutenberg et place-le dans ton dossier local. -
Upload sur HDFS
hdfs dfs -mkdir /data/alice
hdfs dfs -put alice.txt /data/alice/
Vérifie la présence du fichier :
hdfs dfs -ls /data/alice -
Lancer le job WordCount MapReduce
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /data/alice/alice.txt /data/alice/output
(Adapte le chemin du jar si besoin) -
Analyser les résultats
hdfs dfs -ls /data/alice/output
hdfs dfs -cat /data/alice/output/part-r-00000 | head -20
(Affiche les 20 premiers mots comptés) -
Questions de réflexion
- Quels sont les mots les plus fréquents dans le texte ?
- Comment le système assure-t-il la tolérance aux pannes si un DataNode tombe pendant le job ?
- Comment adapterais-tu le script pour ignorer la casse ou les mots très courts (<3 caractères) ?
Ce mini-lab permet de manipuler HDFS, de lancer un vrai job MapReduce, et de comprendre la logique du traitement distribué sur un cluster Hadoop.
Approfondissements Hadoop
- Tuning & performance :
- Taille des blocs : augmenter (256 Mo, 512 Mo) pour de très gros fichiers, diminuer pour de nombreux petits fichiers.
- Facteur de réplication : adapter selon la criticité (3 par défaut, plus pour la sécurité, moins pour économiser l’espace).
- Mémoire et parallélisme : ajuster les paramètres YARN (RAM, CPU par conteneur) pour optimiser l’utilisation du cluster.
- Sécurité :
- Authentification Kerberos : protège l’accès au cluster.
- Chiffrement : possible au repos (HDFS) et en transit (SSL/TLS).
- Contrôle d’accès : permissions POSIX, gestion fine par utilisateur/groupe.
- Formats avancés :
- Parquet, ORC : formats colonnes, idéaux pour l’analytique (compression, lecture rapide de colonnes spécifiques).
- Avro : format sérialisé, adapté à l’échange de données entre systèmes.
- Interopérabilité :
- Spark : lit/écrit nativement sur HDFS, permet des traitements in-memory sur les données stockées.
- Hive : datawarehouse SQL sur HDFS, facilite les requêtes analytiques.
- Pour aller plus loin :
Quiz et mini-lab
-
Préparation
Exercices, examens et projets
Atelier Big Data
Construire un petit pipeline de données et documenter ses choix.
Obligatoire ConsulterExamen Big Data
Évaluer la compréhension de l'architecture et des outils.
Obligatoire ConsulterProjet fil rouge Big Data
Livrer un pipeline reproductible avec ingestion, stockage et restitution.
Livrables :
- Pipeline
- Schéma de données
- Documentation