如何为hadoopmapreduce配置java内存堆空间?

unhi4e5o  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(317)

我曾尝试在大约20gb的数据上运行mapreduce作业,但在reduce shuffle阶段出错。它说是因为内存堆空间。然后,我阅读了许多源代码,我必须减少mapreduce.reduce.shuffle.input.buffer.percent属性在mapred-site.xml上的默认值为0,7。所以,我把它减到0,2。
我想问,属性对我的mapreduce工作的时间性能有影响吗。那么,如何正确配置以使我的mapreduce作业永远不会出错呢?

mec1mxoz

mec1mxoz1#

mapreduce.reduce.shuffle.input.buffer.percent 0.70洗牌期间从最大堆大小分配到存储Map输出的内存百分比。由此看来,如果将此值减小到任意值,可能会降低洗牌阶段的性能。在默认值后面会有一些推理和测试,您可以在这里检查其他相关属性http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
Map器输出的大约数据是多少,如果数据量很大,那么您可能需要增加Map器的数量,同样,如果缩减器的数量很低,那么在缩减阶段可能会发生堆空间错误。
您可能希望检查作业计数器并增加Map器/还原器的数量您也可以尝试通过设置属性mapreduce.reduce.memory.mb和mapreduce.map.memory.mb来增加Map器/还原器内存

相关问题