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



Issue -

我正在运行一系列封装在oozie工作流中的mapreduce作业。输入数据由一堆文本文件组成,其中大多数相当小(kb),但我偶尔会得到超过1-2 MB的文件,这导致我的作业失败。我看到了作业失败的两个原因——一,在一个或两个mr作业中,文件被解析成内存中的图形,对于更大的文件,其mr耗尽内存;二,作业超时。

问题——

1)我相信我可以通过设置mapreduce.task.timeout为0来禁用超时。但是我找不到任何文件提到这样做有什么风险。

2)对于OOM错误,我可以使用的各种配置是什么?这里任何关于潜在解决方案和风险的链接都会很有帮助。

3)在我最终获得OOM之前,我看到了很多"容器被调度程序抢占"的消息。这是单独的问题还是相关的?我该怎么解决这个问题?

关于超时:不需要将其设置为"unlimited",一个相当大的值可以(例如:在我们的Prod集群中,它被设置为300000)

关于在Oozie中需要一个非标准的RAM配额:您正在寻找的属性可能是mapreduce.map.memory.mb用于全局YARN容器配额,oozie.launcher.mapreduce.map.java.opts用于指示JVM有关该配额(即以OOM异常优雅地失败,而不是在没有有用错误消息的情况下使容器崩溃),以及.reduce.对应项。

请参阅(非常差的文档)oozie.launcher.前缀的帖子,如果你想为非mr动作设置属性-例如Shell,或间接产生一系列Map和Reduce步骤的Java程序

相关内容

  • 没有找到相关文章

最新更新