Comment Hive choisit-il le nombre de réducteurs pour un travail?
Plusieurs endroits à-dire la valeur par défaut # de réducteurs dans un travail Hadoop est de 1. Vous pouvez utiliser le mapred.réduire.tâches symbole pour définir manuellement le nombre de réducteurs.
Quand je lance une Ruche d'emploi (sur Amazon EMR, AMI 2.3.3), il a un certain nombre de réducteurs de plus d'un. En regardant les paramètres de travail, quelque chose a mis en mapred.réduire.les tâches, je présume de la Ruche. Comment est-il choisit ce nombre?
Remarque: voici quelques messages lors de l'exécution d'une Ruche à l'emploi qui devrait être un indice:
...
Number of reduce tasks not specified. Estimated from input data size: 500
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapred.reduce.tasks=<number>
...
source d'informationauteur dfrankow | 2013-04-24
Vous devez vous connecter pour publier un commentaire.
La valeur par défaut de 1 peut-être pour une vanille Hadoop installer. La ruche la remplace.
En open source la ruche (et DME probable)
Ce post dit par défaut de la ruche.exec.les réducteurs.octets.par.le réducteur est de 1G.
Vous pouvez limiter le nombre de réducteurs produite par cette heuristique à l'aide de
hive.exec.reducers.max
.Si vous savez exactement le nombre de réducteurs vous le souhaitez, vous pouvez définir
mapred.reduce.tasks
et cela va remplacer toutes les heuristiques. (Par défaut, cette valeur est définie sur -1, indiquant la Ruche doit utiliser son heuristiques.)Dans certains cas - dire 'select count(1) à partir de T' - Ruche va définir le nombre de réducteurs à 1 , quelle que soit la taille des données d'entrée. On les appelle des "complet des agrégats" - et si la seule chose que la requête ne est plein de granulats - ensuite, le compilateur sait que les données de la mappeurs va être réduit à la somme insignifiante et il n'y a pas de point de l'exécution de plusieurs réducteurs.