ApplicationMaster异常退出导致临时文件残留

背景信息

某现网环境每天有大量的MapReduce作业提交到Yarn上执行。发现HDFS上的临时目录/tmp下文件数量多达500万。经排查Yarn的临时目录/tmp/hadoop-yarn/staging/<user>/.staging下有大量应用执行的临时文件残留。

MapReduce的AapplicationMaster异常结束,流程没有走到文件清理步骤就非正常退出。

由于此临时目录下的文件清理操作是在ApplicationMaster退出过程中执行的,如果在执行清理前ApplicationMaster就异常结束了,就会导致此临时目录下的文件残留。ApplicationMaster异常退出通常有以下几种可能的触发场景:
  • 执行yarn application –kill <application_id>命令,MapReduce被Yarn强制Kill掉。
  • 在ResourceManager WebUI上点击application页面的Kill Application按钮,MapReduce被强制kill掉。
  • 用户在后台对MapReduce的MRAppMaster进程执行kill操作,导致MapReduce作业失败。
  • AapplicationMaster执行过程中发生OOM或JVM crash等不可恢复的异常情况,意外退出。
  • AapplicationMaster在执行清理过程中HDFS不可用,导致清理失败。
  • 用户配置了“application.timeout.interval”参数,作业没有在配置的时间内完成,被Yarn强制kill。

操作步骤

  1. 查看Aa\pplicationMaster日志,判断ApplicationMaster是否异常退出?

    • 若ApplicationMaster异常退出,请查看AM日志确认异常退出原因。
    • 若ApplicationMaster正常结束且打印出“org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Deleting staging directory…”日志,则可以判断为配置了mapreduce.task.files.preserve.filepattern或mapreduce.task.files.preserve.failedtasks参数。执行流程图下一步

返回主界面 执行下一步