Erreur de mémoire insuffisante dans la phase de mélange de Mapreduce

J'obtiens des erreurs étranges lors de l'exécution d'un nombre de mots-comme mapreduce programme. J'ai un cluster hadoop avec 20 esclaves, chacun ayant 4 GO de RAM. J'ai configuré ma carte tâches d'avoir un tas de 300 MO et ma réduire la tâche des fentes obtenir 1 GO. J'ai 2 emplacements de carte et 1 réduire la fente par nœud. Tout va bien jusqu'à ce que le premier tour de la carte tâches finitions. Ensuite, il reste des progrès à 100%. Je suppose alors la phase de copie. Chaque carte tâche génère quelque chose comme:

Map output bytes    4,164,335,564
Map output materialized bytes   608,800,675

(Je suis en utilisant SnappyCodec pour la compression)

Après caler pendant environ une heure, l'réduire les tâches de crach avec l'exception suivante:

    Error: java.lang.OutOfMemoryError: Java heap space at  
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.shuffleInMemory(ReduceTask.java:1703) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1563) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1401) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1333

J'ai été sur google et j'ai trouvé ce lien, mais je ne sais pas vraiment quoi faire de lui:
hadoop lien commun

Je ne comprends pas pourquoi hadoop l'expérience de tous les problèmes de reproduction et de fusion si elle est capable de réaliser un terasort de référence. Il ne peut être que tous les carte de sortie devrait s'inscrire dans la mémoire RAM de l'réducteur de filetage. Donc ce qui se passe ici?

Dans le lien fourni ci-dessus, ils ont une discussion sur le réglage des paramètres suivants:

mapreduce.reduce.shuffle.input.buffer.percent = 0.7
mapreduce.reduce.shuffle.memory.limit.percent = 0.25
mapreduce.reduce.shuffle.parallelcopies = 5

Ils affirment que le fait que le produit des paramètres >1 permet heapsize erreurs.
EDIT: Note que 5*1.25*0.7 est encore <1 la mise au point de l'om, mon deuxième solution post!)
Avant de redémarrer cette simulation intensive, je serais très heureux de connaître l'opinion de quelqu'un concernant le problème, je suis confronté à, car il est la peine depuis presque une semaine maintenant. J'ai aussi semblent pas complètement comprendre ce qui se passe dans cette phase de copie, je m'attends à une fusion de tri sur le disque pas besoin de beaucoup de taille de segment de mémoire?

Merci beaucoup à l'avance pour les commentaires et les réponses!

source d'informationauteur DDW