Sommaire

Garantir une évolution proportionnelle des performances

Dans certains systèmes distribués, de nombreuses données de services sont échangées entre les threads (fils d’exécution). Dans certains cas extrêmes, le temps nécessaire pour gérer ces données dépasse le temps de calcul effectivement productif et l’addition de nœuds supplémentaires, loin d’améliorer la situation, peut la dégrader.

Hadoop est conçu selon une architecture dite " Share nothingshare nothing". Les données de services sont réduites au strict minimum, ce qui permet d’économiser de la bande passante et du temps machine. Ces échanges de données sont gérés directement par Hadoop, pas par le développeur. De fait, il existe une relation quasi linéaire entre le nombre de nœuds et les performances d’un cluster Hadoop. 

Ce dernier aspect de Hadoop est intéressant à plusieurs titres :

  • Si un programme Hadoop fonctionne correctement avec un jeu de données représentant 5 % des données réelles et sur un cluster de développement disposant de 5 % des ressources du cluster d’exploitation, il y a de bonnes chances pour qu’il fonctionne de manière satisfaisante sur ce dernier avec 100 % des données.

  • Si un job Hadoop s’exécute trop lentement, il "suffit" de doubler sa taille ...