Erro de falta de memória na fase de reprodução aleatória de Mapreduce

Estou recebendo erros estranhos ao executar umwordcount-like programa mapreduce. Eu tenho um cluster de hadoop com 20 escravos, cada um com 4 GB de RAM. Eu configurei minhas tarefas de mapa para ter um monte de 300MB e meus slots de tarefa reduzir 1GB. Eu tenho 2 slots de mapa e 1 slot de redução por nó. Tudo vai bem até a primeira rodada de tarefas do mapa terminar. Então, o progresso permanece em 100%. Eu suponho então ofase de cópia está acontecendo. Cada tarefa do mapa gera algo como:

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

(Estou usando o SnappyCodec para compactação)

Depois deparada por cerca de uma hora, as tarefas de redução se encaixam com a seguinte exceção:

    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

Eu estava pesquisando e encontrei este link, mas eu realmente não sei o que fazer com ele:link comum hadoop

Eu não entendo porque o hadoop experimentaria qualquer problema em copiar e mesclar se ele fosse capaz de realizar um benchmark do terasort. Não é possível que toda a saída do mapa se encaixe na RAM do encadeamento do redutor. Então, o que está acontecendo aqui?

No link fornecido acima, eles têm uma discussão sobre como ajustar os seguintes parâmetros:

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

Eles alegam que o fato de o produto dos parâmetros ser> 1 permiteempilhar erros. EDIT: Note que 5 * 1.25 * 0.7 ainda é <1 para focar o meu segundo post de solução!) Antes de reiniciar esta simulação intensiva eu ​​ficaria muito feliz em ouvir sobre a opinião de alguém sobre o problema que estou enfrentando, pois está incomodando semana agora. Eu também parecem não entender completamente o que está acontecendo nesta fase de cópia, eu esperaria uma classificação de mesclagem no disco não exigir muito tamanho de heap?

Muito obrigado antecipadamente para quaisquer comentários e respostas úteis!

questionAnswers(4)

yourAnswerToTheQuestion