hdfs - Ataww/SDTD-Mazerunner Wiki

HDFS - Hadoop Distributed File System

Version utilisée : 2.7.3 en Standalone (sans YARN, ni MapReduce)

Présentation générale

HDFS est un système de fichiers distribué. Il est constitué essentiellement de :

Les fichiers sont divisés en blocs de taille élémentaire. Ces blocs sont dupliqués sur les différents DataNodes. Chauque DataNode envoit régulièrement au NameNode des HeartBeats et des BlockReports (liste des blocs stockés sur le DataNode). Le NameNode fait la translation entre un fichier et les blocs qui le constituent, et les DataNodes possédant ces blocs.

Les pannes possibles :

La partition du réseau, même avec HDFS High Availability, peut rendre des blocs indisponibles ou encore rendre le cluster complétement indisponible, par une séparation des NameNodes du reste du cluster. La meilleure solution, augmenter la réplication des éléments.

Fonctionnalités

Architecture fonctionnelle dans Mazerunner

hdfs_functional_view.png

Haute disponibilité

Dans un cluster HDFS standard (sans HA), l'unique NameNode est un single point of failure. En cas de maintenance du serveur ou de crash du NameNode, le cluster entier devient inaccessible. HDFS High Availability, disponible depuis HDFS 2, permet de gérer simultanément 2 NameNodes : l'un en mode Active, l'autre en mode StandBy. En cas de crash de l'Active NameNode, le StandBy NameNode passe automatiquement en mode Active.

Pour maintenir la consistence du cluster :

Monitoring

Chaque instance de processus est surveillée à l'aide de Monit, qui assure le rétablissement des processus en cas de crash.

Pour voir le status des processus, par l'interface web de monit (server-address:2812, admin:admin) ou se connecter via cli :

$ sudo monit status

Le Quorum ZooKeeper est surveillé par l'intermédiaire de script/global_server.

## Infrastructure Les différents services liés à l'outil HDFS sont déployés de la sorte sur nos machines HDFS_Infrastructure

Rq: Le nombre de machines que nous utilisons nous a contraint à placer des services différents sur les mêmes machines, ce qui n'est pas à reproduire dans une réelle application en production dans un soucis de tolérance aux pannes.

Déploiement

Le déploiement des machines HDFS est automatisé dans des scripts Python et suit la logique suivante: HDFS_deployment

Rôle applicatif

HDFS permet la circulation des données tout au long du processus. Il stocke temporairement les données à traiter pour le calcul des recommendations d'un utilisateur ainsi que le résultat du calcul.

HDFS_role