Autres apports de la version 2 de Hadoop

La version 2 de Hadoop supporte officiellement Windows Server et Windows Azure.

La version 2 de Hadoop permet aussi :

  • D’accéder à HDFS à partir d’un système de fichiers distribué NFS-v3, ce qui permet alors de considérer HDFS comme un disque partagé standard.
  • De prendre des “clichés” (snapshots) de tout ou partie d’un cluster.

Hadoop 2 – YARN (Yet Another Resource Negotiator)

Apache Hadoop YARN (Yet Another Resource Negotiator) est une technologie de gestion de clusters. Elle rend l’environnement Hadoop mieux adapté aux applications opérationnelles qui ne peuvent pas attendre la fin des traitements par lots.

La principale différence entre Hadoop version 1 et Hadoop version 2 est la séparation claire dans la version 2 entre la gestion des ressources du cluster et le modèle de traitement des données.

Hadoop 1 vs Hadoop 2

Dans la version 1, MapReduce assure à la fois la gestion des ressources et le traitement des données.

Dans la version 2 :

  • La gestion des ressources du cluster est assurée par YARN.
  • Les modèles de traitement des données, MapReduce pour ce qui nous concerne, s’appuient sur YARN.
Hadoop 1 vs Hadoop 2

Hadoop 1 vs Hadoop 2

Les deux aspects “gestion des ressources du cluster” et “modèle de traitement des données” sont nettement distincts dans la version 2 de Hadoop, ce qui permet d’utiliser YARN avec des modèles de traitement différents de MapReduce tout en bénéficiant des fonctionnalités de HDFS.

Les daemons de type JT et TT n’existent plus dans la version 2 de Hadoop. Ils sont remplacés par plusieurs nouveaux daemons :

  • Le ResourceManager (RM) : il y en a un par cluster.
  • L’ApplicationMaster (AM) : il y en a un par job.
  • Le NodeManager (NM) : il y en a un par nœud esclave.

Fonctionnement de HDFS

Présentation de HDFS

HDFS (Hadoop Distributed File System) est le composant de Hadoop en charge du stockage des données dans un cluster Hadoop

HDFS reprend de nombreux concepts proposés par des systèmes de fichiers classiques comme ext2 pour Linux ou FAT pour Windows. Nous retrouvons donc la notion de blocs (la plus petite unité que l’unité de stockage peut gérer), les métadonnées qui permettent de retrouver les blocs à partir d’un nom de fichier, les droits ou encore l’arborescence des répertoires.

Toutefois, HDFS se démarque d’un système de fichiers classique pour les principales raisons suivantes :

  • HDFS est optimisé pour maximiser les débits de données. La taille d’un bloc de données est ainsi de 64 Mo dans HDFS contre 512 octets à 4 Ko dans la plupart des systèmes de fichiers traditionnels, ce qui permet de réduire le seek time. ( Il est toutefois possible d’augmenter la taille d’un bloc à 128 Mo ou à 256 Mo en fonction des besoins)
  • HDFS est un système de gestion de fichiers du type Write Once Read Many (WORM) : on y écrit une fois le fichier, puis on y accède plusieurs fois..
  • HDFS fournit un système de réplication des blocs dont le nombre de réplications est configurable (3 par défaut). Pendant la phase d’écriture, chaque bloc correspondant au fichier est répliqué sur des nœuds distincts dans le cluster, ce qui contribue à en garantir la fiabilité et la disponibilité au moment de lecture de données. Si un bloc est indisponible sur un nœud, des copies de ce bloc seront disponibles sur d’autres nœuds.
  • HDFS s’appuie sur le système de fichier natif de l’OS pour présenter un système de stockage unifié reposant sur un ensemble de disques et de systèmes de fichiers hétérogènes.

Fonctionnement de HDFS

Le fonctionnement de HDFS est assuré par trois types de deamons :

1. Le NameNode (noeud maitre – master node):

Dans un cluster Hadoop, le NameNode gère l’espace de noms, l’arborescence du système de fichiers et les métadonnées des fichiers et des répertoires. Il centralise la localisation des blocs de données répartis dans le cluster.

Quand un client sollicite Hadoop pour récupérer un fichier, c’est via le Namenode que l’information est extraite. Ce Namenode va indiquer au client quels sont les Datanodes qui contiennent les blocs.

Le NameNode reçoit régulièrement un « battement de cœur » et un Blockreport de tous les DataNodes dans le cluster afin de s’assurer que les datanodes fonctionnent correctement. Un Bloclreport (ou rapport de bloc) contient une liste de tous les blocs d’un DataNode.

En cas de défailance du datanode, le NameNode choisit de nouveaux datanodes pour de nouvelles réplications de blocs de données, équilibre la charge d’utilisation des disques et gère également le trafic de communication des datanodes.

Les métadonnées sont stockées sur disque dur (fichier fsimage) et chargées dans la mémoire vive du NameNode lors du démarrage du cluster
Si vous perdez le NameNode, vous perdez HDFS!

2. Le SecondaryNameNode :

Il s’agit ici d’un abus de langage! Dans l’architecture HDFS, le nom – Secondary NameNode donne l’impression que c’est un substitut du NameNode. Hélas! Ce n’est pas le cas..

Le SecondaryNameNode effectue des tâches de maintenance pour le compte du NameNode. Plus précisément, le Secondary NameNode met à jour le fichier fsimage à interval régulier en y intégrant le contenu des edits.

Le SecondaryNameNode intervient soit :

  • lorsque le fichier edits atteint une taille prédéfinie.
  • à intervalle régulier (par exemple une fois par heure).

3. Le DataNode :

 

Fonctionnement de Hadoop

Pour bien comprendre le fonctionnement de Hadoop, nous vous invitons à lire ces deux cours introductifs sur “Big Data” et “Hadoop”:

L’écosystème Hadoop

Hadoop est principalement constitué de deux composants :

  • Le système de gestion de fichiers distribué, HDFS.
  • Le framework MapReduce (version 1 de Hadoop)/YARN (version 2 de Hadoop).

Plus concrètement l’écosystème Hadoop comprend de nombreux autres outils couvrant le stockage et la répartition des données, les traitements distribués, l’entrepôt de données, le workflow, la programmation, sans oublier la coordination de l’ensemble des composants. On parle des outils comme Hive, Pig, Hbase, Flume,…etc

L’écosystème Hadoop

L’écosystème Hadoop

Stockage et traitement de données

Hadoop a été conçu pour stocker de très gros volumes de données sur un grand nombre de machines (nœuds) équipées de disques durs banalisés, fonctionnant en parallèle.

L’addition de plusieurs nœuds au cluster Hadoop permet d’offrir un espace de stockage et une puissance de calcul pouvant traiter des volumes de données de plusieurs To ou Po.

Le système de gestion de fichiers de Hadoop, HDFS, écrit et lit les fichiers par blocs de 64 Mo par défau. Il est toutefois possible de monter à 128 Mo. Alors que sur des systèmes classiques, la taille est généralement de 4 Ko, l’intérêt de fournir des tailles plus grandes permet de réduire le temps d’accès à un bloc.

Les blocs dans HDFS

Les blocs dans HDFS

La redondance des données

Par défaut, les données chargée dans un cluster Hadoop sont stockées en trois exemplaires, sur des nœuds différents. Cette réplication des données répond en fait à deux objectifs :

  • Disponibilité des données en cas de panne, deux copies des données, stockées sur d’autres nœuds.
  • Lors de l’exécution d’un job Hadoop, chaque tâche peut être exécutée sur n’importe quel nœud, surtout s’il stocke une copie des données nécessaires à la tâche.

Gestion des pannes d’un cluster Hadoop

L’un des avantages de Hadoop réside dans le fait que si un des nœuds qui exécute une partie des traitements tombe en panne, le travail est repris automatiquement par un autre nœud, on parle d’une réaffectation des tâches par le deamon JobTracker.

De plus, Hadoop est capable de détecter l’incident, déterminer la tâche concernée (code et données) et de relancer la tâche sur un autre nœud disposant des données nécessaires à la bonne exécution de la tâche (où l’intérêt de répliquer les données ).

Les modes de fonctionnement de Hadoop

Les modes de fonctionnement de Hadoop sont en nombre de trois :

  • le mode local (local mode) ;
  • le mode pseudo-distribué (pseudo-distributed mode) ;
  • le mode totalement distribué (fully-distributed mode).

Le mode local

En mode local, Hadoop fonctionne sur une seule station de travail et les 5 daemons de Hadoop (NameNode, SecondaryNameNode, DataNode, JobTracker et TaskTracker) s’exécutent tous dans la même JVM. De plus, le système de fichier utilisé est celui du système d’exploitation et non HDFS. Le mode local mode est rarement utilisé, sauf pour tester Hadoop pour la première fois ou déboguer un programme.

Le mode pseudo-distribué

En mode pseudo-distribué, Hadoop fonctionne sur une seule station de travail, mais chacun des 5 deamons s’exécute dans sa propre JVM ainsi que le système de fichier utilisé est HDFS. Le mode pseudo-distribué est souvent utilisé par les développeurs Haddop, parce qu’il développe et teste des jobs simulant un vrai cluster Hadoop.

Le mode totalement distribué

Le mode totalement distribué correspond au fonctionnement d’un vrai cluster Hadoop, avec plusieurs stations de travail interconnectées en réseau. chacun des 5 deamons s’exécute dans sa propre JVM ainsi que le système de fichier utilisé est HDFS.

Le mode pseudo-distribué est celui utilisé dans ce cours.