我在我的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")
答案 0 :(得分:0)
您的配置似乎有问题。
首先,您不需要mapred.child.java.opts
或mapreduce.(map|reduce).child.java.opts
设置。
其次,您希望mapreduce.(map|reduce).java.opts
中设置的堆空间为mapreduce.(map|reduce).memory.mb
如果在进行这些更改后,您仍然面临堆空间问题,我建议您处理较小的拆分或为任务增加堆空间。