Les limites de Hadoop face aux nouveaux enjeux de stockage

Hadoop est un projet open source de la Fondation Apache, constitué de deux composants principaux : un système de fichiers distribués, Hadoop Distributed File System (HDFS), et MapReduce, un framework pour traiter en parallèle de larges ensembles de données et répartissant les tâches sur plusieurs nœuds.

Le système de fichiers HDFS comporte deux briques, le serveur maître NameNode qui contient toutes les métadonnées permettant de localiser les fichiers et les blocs de données, et des DataNode, nœuds esclaves qui gèrent toutes les opérations de lecture/écriture sur les fichiers de données.

Cette architecture permet de traiter de manière performante et rapide de vastes ensembles de données. Néanmoins, plusieurs aspects relatifs au stockage des données dans Hadoop peuvent poser des difficultés. Si certaines sont en train d’être corrigées, plusieurs retours d’expérience ont fait état d’insuffisances en ce qui concerne l’optimisation des ressources matérielles, l’intégration des données ou encore la haute disponibilité.

Ainsi, l’alimentation de fichiers Hadoop nécessite encore le plus souvent des opérations manuelles coûteuses en temps. Par ailleurs, Hadoop a été conçu pour être déployé sur des grappes de serveurs traitant et stockant les données en local, afin de réduire au maximum la latence liée aux échanges sur le réseau.

Dans cette architecture, l’ajout de capacité de traitement et l’ajout de capacité de stockage ne peuvent être gérés de manière véritablement indépendante, ce qui peut vite conduire à des surdimensionnements, notamment quand il faut assurer la fiabilité du système (reprise après incident, tolérance aux pannes, cohérence des données…)

Enfin, les versions de Hadoop antérieures à la 0.23.2 ne permettent pas la haute disponibilité car elles ne gèrent qu’un seul NameNode par grappe de serveurs, ce qui fait de ce dernier un point unique de défaillance.