Vous cherchez à savoir comment Hadoop stocke et traite réellement de grandes quantités de données ?
Dans cet article, nous allons étudier le fonctionnement d'Hadoop en interne. Nous verrons comment Hadoop stocke et traite de grands ensembles de données. L'article explique en détail le fonctionnement de Hadoop. L'article donne d'abord une brève introduction à Hadoop.
Ensuite, nous verrons les composants principaux de Hadoop et les démons s'exécutant dans le cluster Hadoop. L'article explique ensuite le fonctionnement de Hadoop couvrant tous ses composants de base tels que HDFS, MapReduce et YARN.
Voyons donc d'abord la courte introduction à Hadoop.
Introduction à Hadoop
Avec l'essor du Big Data, Apache Software Foundation a développé en 2008 un framework open source appelé Apache Hadoop, qui est une solution à tous les problèmes de Big Data.
Apache Hadoop est un framework capable de stocker et de traiter d'énormes quantités de données non structurées allant de téraoctets à pétaoctets. C'est un système hautement tolérant aux pannes et hautement disponible.
Hadoop stocke une quantité massive de données de manière distribuée dans HDFS. Le Hadoop MapReduce est l'unité de traitement dans Hadoop, qui traite les données en parallèle.
Hadoop YARN est un autre composant central du framework Hadoop, qui est responsable de la gestion des ressources entre les applications exécutées dans le cluster et de la planification de la tâche.
Avant d'étudier le fonctionnement d'Hadoop en interne, voyons d'abord les principaux composants et démons d'Hadoop.
Composants et démons de Hadoop
Hadoop se compose de trois composants principaux qui sont HDFS, MapReduce et YARN.
1. HDFS Hadoop
C'est la couche de stockage pour Hadoop. Hadoop Distributed File System stocke les données sur différents nœuds d'un cluster. Il divise les données en blocs et les stocke sur différents nœuds. La taille du bloc est de 128 Mo par défaut . Nous pouvons configurer la taille du bloc selon nos besoins.
2. Hadoop MapReduce
C'est la couche de traitement dans Hadoop. Hadoop MapReduce traite les données stockées dans Hadoop HDFS en parallèle sur différents nœuds du cluster. Il divise la tâche soumise par l'utilisateur en tâche indépendante et les traite comme des sous-tâches sur le matériel de base.
3. FIL Hadoop
Il s'agit de la couche de gestion des ressources et des processus de Hadoop. YARN est responsable du partage des ressources entre les applications exécutées dans le cluster et de la planification de la tâche dans le cluster.
Ce sont les trois composants principaux de Hadoop.
Démons s'exécutant dans le cluster Hadoop
Certains démons s'exécutent sur le cluster Hadoop. Les démons sont le processus léger qui s'exécute en arrière-plan.
Certains démons s'exécutent sur le nœud maître et d'autres sur le nœud esclave. Étudions maintenant les démons Hadoop.
Les principaux démons Hadoop sont :
1. Démons Maîtres
- NomNoeud : C'est le démon maître dans Hadoop HDFS. Il maintient l'espace de noms du système de fichiers. Il stocke des métadonnées sur chaque bloc de fichiers.
- Gestionnaire de ressources : C'est le démon maître de YARN. Il arbitre les ressources entre toutes les applications exécutées dans le cluster.
2. Démons esclaves
- Noeud de données : DataNode est le démon esclave de Hadoop HDFS. Il fonctionne sur des machines esclaves. Il stocke des données ou des blocs réels.
- NodeManager : C'est le démon esclave de YARN. Il s'occupe de tous les nœuds de calcul individuels du cluster.
Comment fonctionne Hadoop ?
Hadoop stocke et traite les données de manière distribuée à travers le cluster de matériel de base. Pour stocker et traiter toutes les données, le client soumet les données et le programme au cluster Hadoop.
Hadoop HDFS stocke les données, MapReduce traite les données stockées dans HDFS et YARN divise les tâches et attribue les ressources.
Voyons maintenant ces composants en détail.
1. HDFS
Les données dans Hadoop sont stockées dans le système de fichiers distribué Hadoop. Il y a deux démons en cours d'exécution dans Hadoop HDFS qui sont NameNode et DataNode.
un. NomNoeud
NameNode est le démon maître dans HDFS. Il s'exécute sur les nœuds maîtres. Il maintient l'espace de noms du système de fichiers. NameNode ne stocke pas les données réelles. Il stocke les métadonnées, telles que les informations sur les blocs de fichiers, les autorisations de fichiers, les emplacements des blocs, etc.
NameNode gère les DataNode et leur fournit des instructions. NameNode reçoit un heart-beat de DataNodes toutes les 3 secondes, ce qui spécifie que le DataNode est actif.
b. Noeud de données
DataNode est le démon esclave dans HDFS. Les DataNodes sont les nœuds esclaves qui stockent les données commerciales réelles. Ils sont chargés de répondre aux demandes de lecture/écriture du client en fonction des instructions de NameNode. Les DataNodes envoient des messages de pulsation au NameNode pour s'assurer qu'ils sont actifs.
c. Noeud de nom secondaire
C'est un autre démon dans Hadoop HDFS. C'est le nœud d'assistance pour le NameNode principal. Le NameNode secondaire télécharge les journaux d'édition et le fichier Fsimage à partir du NameNode principal et applique périodiquement les journaux d'édition à Fsimage .
Ensuite, il renvoie le fichier Fsimage mis à jour au NameNode. Ainsi, si le NameNode principal échoue, la dernière sauvegarde Fsimage sur le NameNode secondaire est utilisée pour récupérer les métadonnées du système de fichiers.
Chaque fois que le client souhaite lire ou écrire des données sur Hadoop HDFS, il interagit d'abord avec le NameNode. NameNode vérifie d'abord les privilèges du client, et si le client dispose de privilèges suffisants, alors le NameNode fournit l'adresse des DataNodes à partir desquels le client peut lire ou écrire des données.
Le fichier du client dans HDFS est divisé en blocs. La taille de bloc est de 128 Mo par défaut. DataNode stocke les blocs de fichiers. Pour fournir une tolérance aux pannes, HDFS crée des répliques de blocs en fonction du facteur de réplication.
Par défaut, le facteur de réplication est 3, ce qui signifie que 3 copies d'un bloc sont stockées dans HDFS. HDFS stocke des répliques du bloc sur différents DataNodes en suivant l'algorithme Rack Awareness.
Lors de la lecture du fichier, si un DataNode tombe en panne, le NameNode fournit l'adresse d'un autre DataNode contenant une réplique du bloc à partir duquel le client peut lire ses données sans aucun temps d'arrêt.
2. MapReduce
MapReduce est la couche de traitement dans Hadoop. Il traite les données en parallèle sur plusieurs machines du cluster. Il fonctionne en divisant la tâche en sous-tâches indépendantes et les exécute en parallèle sur différents DataNodes.
MapReduce traite les données en deux phases, c'est-à-dire la phase Map et la phase de réduction . L'entrée et la sortie des deux phases sont les paires clé, valeur. Le type de paires clé, valeur est spécifié par le programmeur via la classe InputFormat . Par défaut, le format de saisie de texte est utilisé.
Le programmeur spécifie les deux fonctions, c'est-à-dire la fonction de mappage et la fonction de réduction . Dans la fonction map, le programmeur écrit la logique métier pour le traitement des données.
Dans la fonction Réduire, le programmeur écrit la logique pour résumer et agréger la sortie intermédiaire de la fonction de carte et génère la sortie.
Fonctionnement de Hadoop MapReduce
Chaque fois que le client souhaite effectuer un traitement sur ses données dans le cluster Hadoop, il stocke d'abord les données dans Hadoop HDFS, puis écrit le programme MapReduce pour traiter les données. Hadoop MapReduce fonctionne comme suit :
1. Hadoop divise le travail en tâches de deux types, à savoir mapper les tâches et réduire les tâches. YARN a programmé ces tâches (que nous verrons plus loin dans cet article). Ces tâches s'exécutent sur différents DataNodes.
2. L'entrée de la tâche MapReduce est divisée en parties de taille fixe appelées fractionnements d'entrée.
3. Une tâche de carte qui exécute une fonction de carte définie par l'utilisateur pour chaque enregistrement dans la division d'entrée est créée pour chaque division d'entrée. Ces tâches de carte s'exécutent sur les DataNodes où résident les données d'entrée.
4. La sortie de la tâche de mappage est une sortie intermédiaire et est écrite sur le disque local.
5. Les sorties intermédiaires des tâches de carte sont mélangées et triées, puis transmises au réducteur.
6. Pour une seule tâche de réduction, la sortie intermédiaire triée du mappeur est transmise au nœud où la tâche de réduction est en cours d'exécution. Ces sorties sont ensuite fusionnées puis transmises à la fonction de réduction définie par l'utilisateur.
7. La fonction reduce résume la sortie du mappeur et génère la sortie. La sortie du réducteur est stockée sur HDFS.
8. Pour plusieurs fonctions de réduction, l'utilisateur spécifie le nombre de réducteurs. Lorsqu'il y a plusieurs tâches de réduction, les tâches de mappage partitionnent leur sortie, créant une partition pour chaque tâche de réduction.
FIL
YARN est la couche de gestion des ressources dans Hadoop. Il planifie la tâche dans le cluster Hadoop et attribue des ressources aux applications exécutées dans le cluster. Il est chargé de fournir les ressources de calcul nécessaires à l'exécution des applications.
Deux démons YARN s'exécutent dans le cluster Hadoop pour servir les services principaux YARN. Ce sont :
un. Gestionnaire de ressources
C'est le démon maître de YARN. Il s'exécute sur le nœud maître par cluster pour gérer les ressources sur l'ensemble du cluster. Le ResourceManager a deux composants principaux qui sont Scheduler et ApplicationManager.
Le planificateur alloue des ressources à diverses applications exécutées dans le cluster.
ApplicationManager prend en charge le travail soumis par le client et négocie le conteneur pour l'exécution de l'ApplicationMaster spécifique à l'application, puis redémarre le conteneur ApplicationMaster en cas d'échec.
b. Gestionnaire de nœuds
NodeManager est le démon esclave de YARN. Il s'exécute sur tous les nœuds esclaves du cluster. Il est responsable du lancement et de la gestion des conteneurs sur les nœuds. Les conteneurs exécutent les processus spécifiques à l'application avec un ensemble limité de ressources telles que la mémoire, le processeur, etc.
Lorsque NodeManager démarre, il s'annonce au ResourceManager. Il envoie périodiquement une pulsation au ResourceManager. Il offre des ressources au cluster.
c. ApplicationMaster
L'ApplicationMaster par application négocie les conteneurs à partir des planificateurs, suit l'état des conteneurs et surveille la progression des conteneurs.
Un client soumet une application au ResourceManager. Le ResourceManager contacte le NodeManager qui lance et surveille les conteneurs de calcul sur les nœuds du cluster. Le conteneur exécute l'ApplicationMaster.
La tâche MapReduce et l'ApplicationMaster s'exécutent dans des conteneurs planifiés par le ResourceManager et gérés par les NodeManagers.
Résumons maintenant le fonctionnement d'Hadoop en interne :
1. HDFS divise les données d'entrée du client en blocs de taille 128 Mo. En fonction du facteur de réplication, des répliques de blocs sont créées. Les blocs et leurs répliques sont stockés sur différents DataNodes.
2. Une fois que tous les blocs sont stockés sur HDFS DataNodes, l'utilisateur peut traiter les données.
3. Pour traiter les données, le client soumet le programme MapReduce à Hadoop.
4. ResourceManager a ensuite planifié le programme soumis par l'utilisateur sur des nœuds individuels du cluster.
5. Une fois que tous les nœuds ont terminé le traitement, la sortie est réécrite dans le HDFS.
Résumé
Dans cet article, nous avons étudié tout le fonctionnement de Hadoop. J'espère qu'après avoir lu cet article, vous comprendrez comment Hadoop stocke et traite d'énormes quantités de données.
L'article explique également comment les ressources sont planifiées parmi les applications dans les ressources. L'article décrit les principaux démons exécutés dans le cluster Hadoop et les composants principaux de Hadoop.
J'espère que vous comprenez comment Hadoop fonctionne en interne.
Continuez à apprendre !!