Mapreduce - 处理大型xml文件时堆内存问题

时间:2014-10-15 08:00:05

标签: xml hadoop mapreduce

我在我的MR代码中使用了Mahout XMLINPUTFORMAT,并且成功处理了XML(小尺寸)。

现在,当我尝试发送800MB输入XML文件时,Java Heap内存异常,在强文本映射处理到83%并且作业失败之后,它已经开始了。

我尝试使用以下配置,即使过程没有运气。

有谁能请让我知道进程大(巨大)数据xml文件?

"

conf.set("mapreduce.input.fileinputformat.split.minsize","3073741824")                                       
conf.set("mapred.child.java.opts", "-Xmx14096m -Xss2048m")                                 
conf.set("mapreduce.map.child.java.opts", "-Xmx8072m")                                       
conf.set("mapreduce.reduce.child.java.opts", "-Xmx3024m")                                 
conf.setInt("io.sort.factor",15 )                      
conf.setInt("mapreduce.task.io.sort.mb",2048 )                    
conf.set("mapreduce.task.timeout","6000000")                             
conf.set("mapreduce.map.memory.mb", "3072")                                     
conf.set("mapreduce.map.java.opts", "-Xmx3072m")                                         
conf.set("mapreduce.reduce.memory.mb", "1024")                                         
conf.set("mapreduce.reduce.java.opts", "-Xmx1024m")                                           
conf.set("task.io.sort.mb", "2048")                                            
conf.set("task.io.sort.factor", "100")                                              
conf.set("mapred.job.shuffle.input.buffer.percent","0.40")  

1 个答案:

答案 0 :(得分:0)

您的配置似乎有问题。

首先,您不需要mapred.child.java.optsmapreduce.(map|reduce).child.java.opts设置。 其次,您希望mapreduce.(map|reduce).java.opts中设置的堆空间为mapreduce.(map|reduce).memory.mb

的80%

如果在进行这些更改后,您仍然面临堆空间问题,我建议您处理较小的拆分或为任务增加堆空间。