pandazx's blog

Hadoop, データ分析など雑多な技術ブログ

MapReduceでJava heap space や physical memory limits エラー

環境:CDH4.1、YARN

対象データが大きいとOutOfMemoryエラーなどが出ることがあります。

もし、map実行中にJava heap spaceエラーが出たら、mapreduce.map.java.opts の値を大きくするといいかもしれません。

reduce実行中のエラーなら、mapreduce.reduce.java.opts

メモリ関係の主な設定パラメータ

mapred-site.xml

mapreduce.map.java.opts
mapreduce.reduce.java.opts
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
yarn.app.mapreduce.am.resource.mb
yarn.nodemanager.vmem-pmem-ratio

yarn-site.xml

yarn.nodemanager.resource.memory-mb

pmem, vmem関連のメモリエラー

Container [container ID] is running beyond physical memory limits. Current usage: 2.1gb of 2.0gb physical memory used; 2.7gb of 4.0gb virtual memory used. Killing container.

これはmap実行中にphysical memory(物理メモリ)の制限値を超えた場合に出るエラー

どこでその制限値が設定されているのかというと、mapreduce.map.memory.mb

virtual memory(仮想メモリ)はphysical memoryに対する比率で設定します(yarn.nodemanager.vmem-pmem-ratio)

物理メモリが1000MBで比率を2にすれば、仮想メモリは2000MBになります。