Qu'est-ce que Hadoop ?

Hadoop est un framework open-source développé par Apache Software Foundation pour le traitement distribué et le stockage de grandes quantités de données. Hadoop permet de traiter des ensembles de données massifs en utilisant des clusters de machines, ce qui le rend extrêmement puissant pour les applications de Big Data.

Composants Principaux de Hadoop

Hadoop se compose principalement de deux modules :

  1. Hadoop Distributed File System (HDFS)
  2. MapReduce

1. Hadoop Distributed File System (HDFS)

HDFS est un système de fichiers distribué conçu pour stocker de très grands fichiers de manière fiable et pour diffuser ces données rapidement aux nœuds du cluster. HDFS divise les fichiers en blocs et les distribue sur plusieurs nœuds pour une redondance et une disponibilité accrues.

Caractéristiques :

  • Tolérance aux pannes : Réplication des données sur plusieurs nœuds.
  • Grande capacité : Gère de très gros fichiers et de grandes quantités de données.
  • Accès rapide : Conçu pour des lectures et écritures séquentielles rapides.

2. MapReduce

MapReduce est un modèle de programmation pour le traitement distribué de grandes quantités de données. Il se compose de deux phases principales : Map et Reduce.

  • Map : Traite les données d'entrée et génère des paires clé-valeur intermédiaires.
  • Reduce : Agrège les paires clé-valeur intermédiaires pour produire le résultat final.

Fonctionnement de Hadoop

  1. Stockage des Données dans HDFS

    • Les fichiers sont divisés en blocs.
    • Les blocs sont distribués et répliqués sur plusieurs nœuds du cluster pour la tolérance aux pannes.
  2. Traitement des Données avec MapReduce

    • Les tâches Map sont distribuées aux nœuds qui contiennent les blocs de données correspondants.
    • Les résultats intermédiaires sont regroupés et triés (shuffle and sort).
    • Les tâches Reduce agrègent les résultats pour produire la sortie finale.

Exemple d'Utilisation de Hadoop

Imaginons que nous souhaitons compter le nombre de fois où chaque mot apparaît dans un grand ensemble de documents.

1. Phase Map

La phase Map lit les documents, divise le texte en mots, et génère des paires clé-valeur où la clé est le mot et la valeur est 1.

2. Shuffle and Sort

Les paires clé-valeur intermédiaires sont regroupées par clé.

3. Phase Reduce

La phase Reduce agrège les valeurs pour chaque clé, produisant ainsi le nombre total d'occurrences de chaque mot.

Exemple avec Hadoop Streaming

Hadoop Streaming permet d'utiliser des scripts en langage de programmation comme Python ou JavaScript pour les phases Map et Reduce.

Script Map (mapper.py)

import sys

for line in sys.stdin:
    words = line.strip().split()
    for word in words:
        print(f"{word}\t1")
 

Script Reduce (reducer.py)

import sys

current_word = None
current_count = 0

for line in sys.stdin:
    word, count = line.strip().split('\t')
    count = int(count)

    if current_word == word:
        current_count += count
    else:
        if current_word:
            print(f"{current_word}\t{current_count}")
        current_word = word
        current_count = count

# Affichage du dernier mot traité
if current_word:
    print(f"{current_word}\t{current_count}")

 

Exécution sur Hadoop

Pour exécuter ces scripts avec Hadoop Streaming, utilisez la commande suivante :

hadoop jar /path/to/hadoop-streaming.jar \
  -input /path/to/input \
  -output /path/to/output \
  -mapper "python mapper.py" \
  -reducer "python reducer.py"

Avantages de Hadoop

  1. Scalabilité : Hadoop peut facilement évoluer en ajoutant des nœuds supplémentaires au cluster.
  2. Tolérance aux pannes : La réplication des données et la redondance permettent de résister aux pannes matérielles.
  3. Rentabilité : Hadoop utilise des serveurs bon marché pour le stockage et le traitement des données, ce qui réduit les coûts.

Conclusion

Hadoop est un outil puissant pour le traitement et le stockage de grandes quantités de données. Sa capacité à distribuer les données et les tâches de traitement sur un cluster de machines le rend idéal pour les applications de Big Data. Grâce à des composants comme HDFS et MapReduce, Hadoop offre une solution robuste, scalable et tolérante aux pannes pour gérer et analyser les données massives.

En utilisant des exemples concrets et des scripts simples, nous avons illustré comment Hadoop peut être utilisé pour des tâches de traitement de données massives, montrant ainsi son importance dans le domaine du Big Data.

Modifié le: mardi 18 février 2025, 06:24