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 – HDFS Federation

Le dispositif HDFS Federation permet de faire cohabiter plusieurs NameNodes (NN) au sein d’un même cluster physique.

Les NN sont indépendants deux à deux : chaque NN gère un espace de nommage (namespace) qui lui est propre et les NN ne communiquent pas entre eux.

Chaque NN se voit allouer un certain nombre de blocs pour stocker les fichiers dont il a la charge. Ces blocs sont répartis sur plusieurs nœuds. Un disque peut héberger des blocs correspondant à des NN différents.

L’intérêt du concept de Federation est double :

  • Federation facilite le scaling out d’un cluster :
    • Il est facile de rajouter des nœuds pour augmenter la capacité de stockage et/ou la puissance de traitement mais, dans la version 1, toute la charge de travail repose sur un seul NN, ce qui a ses limites lorsque l’on gère des clusters de plusieurs milliers de nœuds.
    • La version 2 de Hadoop, en distribuant la charge de travail entre plusieurs NN, facilite l’avènement de clusters de grande taille ; les temps de réponse au niveau des NN peuvent être améliorés (moins de métadonnées à gérer pour chaque NN, d’où besoins en RAM et en temps CPU moindres pour chaque NN, etc.).
  • Federation permet d’isoler chaque namespace des autres, par exemple pour faire cohabiter au sein d’un même cluster physique un cluster logique de développement et un cluster logique de production.
Une Federation HDFS

Une Federation HDFS

Les notions de High Availability et de Federation sont indépendantes. Il est possible d’activer l’une ou l’autre, ou les deux. Dans ce dernier cas, il faut activer l’option Federation avant d’activer l’option High Availability.

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 ).