如何在mapreduce作业中处理不同的输入批量大小

时间:2015-09-03 14:14:59

标签: java hadoop mapreduce

问题 -

我正在运行一系列包含在oozie工作流程中的mapreduce作业。输入数据由一堆文本文件组成,其中大部分都是相当小的(KB),但我偶尔会得到超过1-2 MB的文件,导致我的作业失败。我看到工作失败的两个原因 - 一个,在一个或两个mr作业内,文件被解析成内存中的图形,而对于一个更大的文件,它的mr内存不足,两个,作业超时。

问题 -

1)我相信我可以通过将mapreduce.task.timeout设置为0来禁用超时。但我无法找到任何提及此操作风险的文档。

2)对于OOM错误,我可以搞砸的各种配置是什么?此处有关潜在解决方案和风险的任何链接都非常有用。

3)在我最终获得OOM之前,我看到很多“容器被调度程序抢占”消息..这是一个单独的问题还是相关的?我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

关于超时:无需将其设置为“无限制”,一个相当大的值可以(例如,在我们的Prod群集中它设置为300000)

关于在Oozie中要求非标准RAM配额:您要查找的属性可能是mapreduce.map.memory.mb全局YARN容器配额,oozie.launcher.mapreduce.map.java.opts可以向JVM指示该配额(即正常失败) OOM异常,而不是崩溃容器,没有有用的错误消息),以及.reduce.对应的。{/ p>

如果您要为非MR操作设置属性,请参阅that post(文档记录很少)oozie.launcher.前缀 - 例如Shell,或间接产生一系列Map和Reduce步骤的Java程序