Amazon Elastic MapReduce で Hadoop ジョブを実行していますが、OutOfMemory エラーが発生し続けます。値は確かにほとんどの MapReduce 値よりも少し大きいですが、サイズを劇的に小さくしてもまだ発生しているようです。スタック トレースは次のとおりです。
Error: java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.shuffleInMemory(ReduceTask.java:1698)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1558)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1407)
at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1339)
このスタック トレースは完全に私のコードの範囲外であるため、どのコードを表示すればよいか正確にはわかりません。バージョンはhadoop 0.20.205です
一度に読み取る値が少なくなるようにレデューサーを構成する方法はありますか? 利用可能なメモリに基づいて自動的に処理されるべきではありませんか?