0

map-reduce ジョブで、「java.lang.OutOfMemoryError: Java heap space」というエラーが発生しました。マッパー関数でこのエラーが発生するため。マッパーへの入力サイズを下げると、エラーが発生しなくなると考えたので、mapred.max.split.size をより低い値に変更しました。

その後、再度ジョブを開始したところ、「実行するマッパー タスクの数」が増加していることがわかりました。そのため、mapred.max.split.size を下げることは良い考えであると考えました。より少ないメモリ要件でより多くのマッパーを使用することです。

しかし、「java.lang.OutOfMemoryError: Java heap space」エラーが何度も何度も発生しました。

Hadoop の仕組みを理解していなかったようです。

助言がありますか?

4

1 に答える 1

3

子ヒープ サイズは、 で変更できmapred.child.java.opts=-Xmx3000mます (新しい API では、 でより具体的に指定できますmapreduce.map.java.opts)。並行して実行できる map タスクと reduce タスクの数を選択して、ノードを調整することもできます。これは、たとえば、Tasktracker で使用可能なmapおよび reduceスロットの数によって制御できます。

mapred.tasktracker.map.tasks.maximum=7
mapred.tasktracker.reduce.tasks.maximum=3

他にもオプションmapred.cluster.map.memory.mb=300がありますmapred.job.map.memory.mb=600が、今のところは必要ないと思います。

于 2013-09-11T12:59:12.373 に答える