Comment fonctionne la plateforme Hadoop pour gérer le big data

hadoop big data id 3368

Ces dernières années, le traitement des serveurs d’application a connu une évolution exponentielle. D’un autre côté, les bases de données n’ont pas synchronisé avec l’explosion des serveurs d’application à cause de leur capacité et de leur vitesse limitées. Aujourd'hui, suite à la génération de très grands volumes de données par les diverses applications existantes, Hadoop joue un rôle primordial et très attendu dans la refonte des bases de données.

Sur le plan des activités des grandes organismes et entreprises, Hadoop prévoit plusieurs avantages à leur propos (directs et indirects). Notamment, l’utilisation de la technologie open source sur des serveurs peu hébergés dans le cloud, qui  permet aux entreprises de réduire leur coûts d’exploitation et d’intégration des données.

Ces nombreux avantages et cette forte intégration du système Hadoop pour régler les problématiques des données massives font de ce framework une composante principale des systèmes Big data pour la gestion et traitement des données. 

Dans les paragraphes suivants, nous mettrons le point sur les notions principales de l’environnement Hadoop, à savoir ses avantages, modes de fonctionnement, composantes principales et finalement les différentes étapes pour son installation et configuration.

Table des matières

2. Définition

Hadoop est une plateforme « framework » open source destiné aux traitements distribués des données massives de l’ordre de plusieurs pétaoctets. À travers ses fonctionnalités avancées et performantes, Hadoop permet de faciliter la création d’applications distribuées ce qui fait de lui un environnement Big Data typique.

L’écosystème Hadoop est un produit de la fondation Apache basé pour sa création sur le langage java. Hadoop a créé un grand succès au fil de temps ce qui lui a permet aujourd’hui de se positionner avec plus de 42000 nœuds chez Yahoo.



Ainsi, plusieurs fondations mondiales utilisent Hadoop tel que Ebay, Facebook, Amazon, Google, Microsoft, LinkedIn, Twitter…

3. Avantages de Hadoop

La plateforme Hadoop permet de vérifier les critères les plus importants des solutions Big Data à savoir :

  • La scalabilité : assurée par la performances délivrées des clusters de haut niveau.
  • Parallélisme des données: un même traitement et calcul peut être effectué sur toutes les données.
  • Performance : Hadoop délivre un support de traitement de grands volumes de données et d’énormes data sets à travers le critère de parallélisme.
  • Économie : les coûts lors de l’utilisation de Hadoop sont mieux contrôlés grâce à l’utilisation de matériel de calcul de type standard. 

4. Modes de fonctionnement de Hadoop : 

Hadoop peut fonctionner sous trois modes. L’utilisateur peut opter pour le mode de fonctionnement d’adoptant le mieux à ses besoins. Les 3 modes sont les suivants :

  • Le mode local : dans ce mode, Hadoop fonctionne sur une seule machine et les 5 daemons Hadoop (que nous développerons par la suite) s’exécutent dans la même Java Virtual Machine (JVM).
  • Le mode pseudo-distribué : dans ce mode, Hadoop fonctionne également sur une seule machine tout comme le mode local mais la différence s’inscrit au niveau des daemons dans la mesure ou chaque daemon s’exécute dans sa propre JVM.
  • Le mode totalement distribué : dans ce mode, on s’aligne plus au fonctionnement réel d’un cluster Hadoop avec un ensemble de machines interconnectées dans un réseau et avec des daemons sur des JVM indépendantes.

5. Composantes principales de Hadoop :

Le fonctionnement de Hadoop repose sur deux parties essentielles :

  • HDFS (Hadoop Distributed File System)
  • MapReduce (Distributed programing framework)

5.1. HDFS  (Hadoop Distributed File System)

5.1.1. Définition générale

HDFS est un système de fichiers distribués de Hadoop destiné principalement pour le stockage distribué des données. Ce composant est distribué, tolérant aux pannes, portable, scalable et également extensible.

HDFS fait une analogie de nombreux concepts inspirés par d’autres systèmes de fichiers classiques à savoir ext2,FAT ou encore NTFS. Par ailleurs, ce système permet ne forte abstraction de l’architecture physique de stockage dans le but de manipuler le système de fichier distribué comme un disque dur.

Un fichier enregistré dans HDFS est décomposé par défaut en grands blocs d’une tailles de 64 Mo ( cette taille est définit par défaut , mais on peut la modifier au niveau des fichiers de configuration de HDFS).

5.1.2. Architecture HDFS

Lire plus : Comment HDFS gère les fichiers distribués Hadoop ?  Comprendre le HDFS, ses caractéristiques , objectifs, architecture ainsi que quelques commandes utiles.

Une architecture de cluster HDFS repose sur deux composants majeurs : le NameNode et le DataNode.

  • NameNode : le NameNode est le service central ou le maître qui fait la gestion de l’état du système de fichiers. Cette gestion est réalisée à travers le maintien de l’arborescence des fichiers ainsi que les métadonnées des fichiers et répertoires d’un système hadoop. Il a une connaissance globale des DataNodes sur lesquels les blocs sont stockés.
  • DataNode : le DataNode contient les blocs de données stockés à leurs niveau. Nous réalisons en fait qu’il existe un DataNode pour chaque machine du cluster. Hiérarchiquement, on peut dire que les DataNodes sont sous l’égide du NameNode, on peut également les nommer des « Workers ».
  • Secondary NameNode : malgré les différents avantages du NameNode, ce dernier représente un point de défaillance dans le système Hadoop. Si un problème provient du NameNode, il n’y a plus moyen d’extraire les blocs d’un fichier donné. C’est là où intervient la notion du Secondary NameNode qui a été mis en place dans la seconde version de Hadoop qui vérifie périodiquement l’état du nœud maître pour le remplacer dans le cas où il n’est plus disponible. 

5.1.3. Écriture d’un fichier sur HDFS

Les principaux étapes exécutées lors de la procédure d’écriture d’un fichier sur HDFS sont les suivantes :



  1. Stocker le fichier cible sur HDFS en utilisant la commande hadoop fs.
  2. Le programme va diviser le fichier en blocs de 64 Mo.
  3. Une requête sera lancée au NameNode pour stocker le fichier au sein de la HDFS sous un nom donné.
  4. Le NameNode va ensuite indiquer au programme l’emplacement de stockage des blocs par rapport aux DataNodes disponibles.
  5. Le client Hadoop va ensuite contacter directement les DataNodes nommés par le NameNode et demander le stockage des blocs en question.
  6. Finalement, les DataNodes vont répliquer les données entre eux pour éviter la perte de données sous la coordination continu du NameNode.

5.1.4. Lecture d’un fichier sur HDFS

La lecture du fichier sur HDFS utilisé également le client Hadoop. Dans cette optique, nous pouvons résumer les étapes de lecture comme suit :

  1. Le client va contacter le NameNode pour lui indiquer son souhait de lecture du fichier en question.
  2. Le NameNode va délivrer les informations nécessaires par rapport aux blocs et leur emplacement au client.
  3. Le programme va contacter les DataNode directement et leur demandera de transmettre les blocs souhaités.
  4. En cas d’absence de réponse de la part du DataNode contacté, le programme passera à un autre DataNode selon la liste fournie par le nœud maître.

5.2. MapReduce (Distributed programing framework)

5.2.1. Problématique

Lorsqu’on dispose d’un grand volume de données à traiter, on développe généralement des problèmes de mémoire , d’ajout des valeurs… Le temps de traitement est aussi long et non optimale ainsi qu’on peut avoir des réponses erronées lors d’un traitement séquentiel. 

Afin de remédier à ces problèmes, la solution efficace et rapide de traitement de ces données est le MapReduce.

5.2.2. Définition du MapReduce

On peut définir le MapReduce comme étant un paradigme dédié pour exécuter un problème large et complexe d’une manière distribuée. Comme son nom l’indique, MapReduce définit deux opérations à effectuer sur les données d’input , à savoir :

  • L’opération MAP : qui transforme les données d’entrée en couples (clé, valeur).
  • L’opération REDUCE : qui applique un traitement aux valeurs des clés en sortie de l’opération MAP pour avoir en fin de compte un résultat pour chacune des clefs distincts.

5.2.3. Étapes d’un traitement MapReduce

On distingue principalement 4 étapes dans un traitement MapReduce :

  1. Split : Qui découpe les données d’entrée en des fragments.
  2. Map : Obtenir les couples (clef, valeur) pour chaque fragment découpé.
  3. Shuffle : Groupe les couples (clef, valeur) par clef.
  4. Reduce : Indexer les groupes par clefs avec une valeur pour chaque clé distinct.

6. Tutoriel Installation et configuration de Hadoop

Afin de concrétiser les notions définies ci-dessus , nous devons tout d’abord intégrer le framework Hadoop dans un environnement de travail. Cet environnement peut être soit local, pseudo-distribué ou distribué . 

Nous décrirons dans ce paragraphe les étapes ultimes pour l’installation de Hadoop dans un environnement local .

6.1. Installation de Hadoop

  • Il faut commencer d’abord par vérifier l’installation de java avec la commande :

Java-version

  • Télécharger la dernière version de Hadoop depuis le site officiel de la fondation Apache :

https://hadoop.apache.org/releases.html

  • Décompresser le fichier « hadoop-3.1.2.tar » dans l’emplacement « C:\ ».
  • Configurer les variables d’environnement :
    • Variable HADOOP HOME :
      • Variable name : HADOOP_HOME
      • Variable value : C:\Hadoop-3.1.2\bin
    • Variable JAVA_HOME:
      • Variable name : JAVA_HOME
      • Variable value : C\Java\bin

6.2. Configuration de Hadoop

  1. Se déplacer dans le fichier d’installation de hadoop et ouvrir le dossier etc/hadoop.
  2. Modifier les fichiers de configuration suivants :
    • Core-site.xml
  1. <configuration>
  2.     <property>
  3.         <name>fs.defaultFS</name>
  4.         <value>hdfs://localhost:9000</value>
  5.     </property>
  6. </configuration>
    • hdfs-site.xml
  1. <configuration>
  2.     <property>
  3.         <name>dfs.replication</name>
  4.         <value>1</value>
  5.     </property>
  6. </configuration>
    • mapred-site.xml
  1. <configuration>
  2.     <property>
  3.         <name>mapreduce.framework.name</name>
  4.         <value>yarn</value>
  5.     </property>
  6. </configuration>
    • yarn-site.xml
  1. <configuration>
  2.     <property>
  3.         <name>yarn.nodemanager.aux-services</name>
  4.         <value>mapreduce_shuffle</value>
  5.     </property>
  6.     <property>
  7.         <name>yarn.nodemanager.env-whitelist</name>
  8.         <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR, CLASSPATH_PREPEND_DISTCACHE, HADOOP_YARN_HOME, HADOOP_MAPRED_HOME
  9.         </value>
  10.     </property>
  11.     <property>
  12.         <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage
  13.         </name>
  14.         <value>98.5</value>
  15.     </property>
  16. </configuration>
  • Initialiser le cluster Hadoop

Exécuter la commande suivante depuis l’emplacement "C:\Hadoop" :



Hadoop fs namenode –format

  • Démarrer le cluster Hadoop:

sbin/start-dfs.sh

  • Vérifier si les namenodes et datanodes sont en marche :

Jps

Le résultat de la commande devrait ressembler à ceci :

19203 DataNode
29219 Jps
19126 NameNode
19303 SecondaryNameNode
  • Vérifier l’installation de Hadoop :

http://localhost:50070 

Pour accéder à hdfs file system : Utilities ? Browse the file system

Hadoop id 3368

Pour visualiser les détails du hadoop cluster : 

http://localhost:8088/cluster

Conclusion

En un temps restreint, Hadoop a su s'imposer dans le secteur des technologies de l’informatique en facilitant le processus de traitement , intégration et analyse des données massives. Dans ce contexte, Hadoop a une panoplie d’applications dans divers domaines tel que la détection des fraudes bancaires, le suivi de flux de données des clics des utilisateurs ainsi que le suivi de géolocalisation et les données des machines et capteurs. Aujourd’hui, avec de plus en plus de données à capturer et à analyser, Hadoop, doté de ses compétences, continue à répondre à cette évolution des données et aux besoins de ses utilisateurs.