Lors de la configuration d'un cluster Hadoop, quelle est la méthode scientifique pour définir le nombre de mappeurs/réducteurs pour le cluster ?
Réponses
Trop de publicités?Il n'y a pas de formule. Cela dépend du nombre de cœurs et de la quantité de mémoire dont vous disposez. Le nombre de mappeurs + le nombre de réducteurs ne doit pas dépasser le nombre de cœurs en général. N'oubliez pas que la machine exécute également les démons Task Tracker et Data Node. L'une des suggestions générales est d'utiliser plus de mappeurs que de réducteurs. Si j'étais vous, j'exécuterais une de mes tâches typiques avec une quantité raisonnable de données pour l'essayer.
Citation de "Hadoop The Definite Guide, 3rd edition", page 306
Comme les travaux MapReduce sont normalement d'E/S, il est logique d'avoir plus de tâches que de processeurs pour obtenir une meilleure utilisation. meilleure utilisation.
La quantité de sursouscription dépend de l'utilisation de l'unité centrale des travaux. que vous exécutez, mais une bonne règle empirique est d'avoir un facteur compris entre un et deux plus de tâches (en comptant les tâches de map et de reduce) que de processeurs.
Dans la citation ci-dessus, un processeur est équivalent à un noyau logique.
Mais ce n'est qu'en théorie, et il est fort probable que chaque cas d'utilisation est différent d'un autre, certains tests doivent être effectués. Mais ce nombre peut être un bon point de départ pour effectuer des tests.
Tiré de Hadoop Gyan-Mon blog :
Le nombre de mappeurs est décidé en fonction du principe de localisation des données décrit précédemment. Principe de localisation des données : Hadoop fait de son mieux pour exécuter les tâches de mappage sur les nœuds où les données sont présentes localement afin d'optimiser le réseau et la latence de communication entre les nœuds. Comme les données d'entrée sont divisées en morceaux et fournies à différentes tâches cartographiques, il est souhaitable que toutes les données fournies à cette tâche cartographique soient disponibles sur un seul nœud. Comme HDFS ne garantit que les données ayant une taille égale à sa taille de bloc (64M) d'être présentes sur un nœud, il est conseillé/conseillé d'avoir une taille de division égale à la taille de bloc HDFS afin que la tâche cartographique puisse profiter de cette localisation des données. Par conséquent, 64M de données par mappeur. Si nous voyons certains mappeurs fonctionner pendant une très petite période de temps, essayez de réduire le nombre de mappeurs et de les faire fonctionner plus longtemps pendant une minute ou deux.
Le nombre de réducteurs doit être légèrement inférieur au nombre de slots de réduction dans le cluster (le concept de slots fait l'objet d'une préconfiguration dans les propriétés du job/task tracker lors de la configuration du cluster) afin que tous les réducteurs terminent en une seule vague et utilisent pleinement les ressources du cluster.