mapreduce:自定义任务outofmemory失败

j5fpnvbx  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(313)

我有一个Map只有工作,作为一个文件的任务操作。有时文件会导致任务内存不足类型异常。
假设一个输入目录有10个文件。因此,这项工作将有10项任务。现在设想9个“好”文件将成功,1个“坏”文件将导致内存不足异常。
理想情况下,我希望一个“坏”文件移动到隔离目录。9个“好”文件写入输出。作业成功,日志中出现警告。
部分成功可能来自使用 mapreduce.reduce.failures.maxpercent 好的设置。
但是,当容器出现内存不足的故障时,如何将“坏文件”复制到隔离区?
我在想一个自定义fileoutputcommitter重写taskabort方法将提供适当的钩子。
以前有人做过吗?

zphenhs4

zphenhs41#

我试图在job history server restapi中找到答案,但不幸的是,任务尝试没有存储有关其输入路径的信息。
如果找不到更好的解决方案,可以这样做:
在hdfs上为您的作业创建一个特殊目录
在mapper安装方法中,获取输入的分割名称,并将其存储在此目录中的特殊标记文件中
当Map程序成功完成时,在清理方法中删除此标记文件
作业完成后,检查目录并处理存在哪些名称的坏文件

相关问题