Hadoop, framework libre basé sur l’architecture de MapReduce, regroupe les fichiers en gros blocs avant de les fournir aux nœuds du cluster. Ces derniers sont regroupés en deux principaux composants :
- les nœuds maîtres (master nodes)
- les nœuds esclaves (slave nodes).
Les noeuds maîtres (nœuds principaux de Hadoop) sont des serveurs hébergeant les différents services tels que: la gestion du stockage ou le traitement.
Les noeuds esclaves sont des machines, que l’on peut appeler également «nœuds travailleurs», qui exécutent les tâches envoyées par les nœuds maîtres. C’est dans ces noeuds que le stockage et le traitement des données de Hadoop a lieu. Plusieurs services sont donc utilisés : NodeManager, ApplicationMaster, Container, TaskTracker, DataNode…
Quels sont les principaux éléments installés dans Hadoop ?
- Hadoop Distributed File System (HDFS) : C’est un système de fichiers qui aura pour but de stocker et de maintenir une grande quantité de données.
- MapReduce Engine : C’est un patron d’architecture qui consiste à gérer les composants et à guider le processus de calcul.
- YARN: Remplaçant de MapReduce depuis la création de la version 2.0 de Hadoop, YARN apporte en plus la simultanéité des exécutions des applications et offre un meilleur suivi de la donnée. La séparation en deux grands noeuds est la principale différence apportée par YARN. L’un des noeuds, que l’on appellera “RessourceManager” (RM), concernera la gestion des ressources; et l’autre que l’on nommera “ApplicationMaster” (AM), traitera la partie pilotage des tâches ou applications. A noter que AM est un framework qui négocie les ressources RM dans le but d’exécuter les tâches.
Quels sont les nodes de Hadoop ?
Hadoop est composé des nœuds principaux suivants :
- Name Node
- Data Node
- Job Tracker
- Task Tracker
NameNode est un serveur maître qui gère l’espace de noms du système de fichiers. Les opérations executées peuvent être: ouvrir, fermer ou renommer des fichiers (ou répertoires). Il permet également de maintenir l’accès aux fichiers par les clients et détermine le mappage des blocs aux DataNodes.
Chaque DataNode contient un bloc d’un fichier (qui a été divisé) des données utilisateur. Ce noeud se chargera de répondre aux demandes de lecture et d’écriture des clients du système de fichiers. Sous les instructions du NameNode, le DataNode peut également: créer, supprimer ou dupliquer des blocs.
JobTracker est un processus essentiel impliqué dans l’exécution de MapReduce. Il regroupe les tâches de ce dernier vers des nœuds spécifiques du cluster.
TaskTracker est un nœud du cluster qui accepte les tâches suivantes: mapper, réduire et mélanger. Il est configuré avec un ensemble d’ emplacements, ceux-ci indiquent le nombre de tâches qu’il peut accepter.
Qu’est-ce que MapReduce ?
MapReduce est un patron d’architecture permettant la manipulation de grandes quantités de données. Ces dernières seront distribuées dans un cluster de machines et traitées.
MapReduce comprend deux fonctions executées l’une après l’autre:
- map()
- reduce()
1 – Fonction Map :
Les données en entrée sont divisées en plusieurs blocs qui seront ensuite assignés à un Mapper (serveur Hadoop qui exécute la fonction Map). Ce dernier pourra ainsi traiter un ou plusieurs blocs.
Par exemple : un fichier est divisé en 1000 blocs. 1000 Mappers peuvent traiter un bloc chacun, ou 500 Mappers peuvent en traiter deux chacun, etc… Le nombre de Mappers sera décidé par le framework Hadoop en fonction de la taille des données à traiter.
A noter que contrairement à la fonction Reduce, la fonction Map est une étape primordial pour le filtre des données initiales.
2 – Fonction Reduce :
Une fois que tout les Mappers ont terminé leur traitement, le framework mélange, trie et les transfère les résultats aux Reducers (serveur Hadoop qui exécute la fonction Reduce).
Par exemple: Le framework doit calculer la somme total du nombre d’employés dans une entreprise. On utilise 3 Reducers. Chacun calcule simultanément une partie de la somme. A partir des valeurs en sortie générés par les 3 Reducers, le résultat final sera ensuite calculé.
Il peut exister d’autres étapes intermédiaires et facultatifs entre Map et Reduce tels que: “Combine” et “Partition”.