概要描述
用spark-submit提交到yarn后,任务执行完成后,在yanr的yarn.nodemanager.local-dirs参数配置的缓存目录下生成的文件却没有清理
虽然在nodemanager的日志中看到了这个removed,但是实际ls还是能看到jar包还在
详细说明
添加清理日志的参数
https://blog.csdn.net/mtj66/article/details/51841930
根据这篇文章配置了参数yarn.nodemanager.localizer.cache.target-size-mb跟yarn.nodemanager.localizer.cache.cleanup.interval-ms但是没有达到预期效果
缓存目录下还是有jar包,而且每个缓存目录的都一样:
usercache缓存大小半天时间已经上百个G了,修改参数yarn.nodemanager.localizer.cache.cleanup.interval-ms希望清理的频率更大些但是没有效果
原因与解决
yarn.nodemanager.delete.debug-delay-sec 这个配置项在yarn-site.xml里面
这个配置项是调度task删除目录的时间,默认是24h,它是真正删除目录的时间,检查了缓存文件,确实没有超过24h的,修改这个参数是1h,验证了缓存确实1h后清理了。
之前改过的那yarn.nodemanager.localizer.cache.cleanup.interval-ms参数,它会干两件事情:
-
a) 调度删除task,删除XXX_DEL_文件夹,调度执行的时间是yarn.nodemanager.delete.debug-delay-sec,也就是24小时后执行
-
a) 检查cache文件,超过yarn.nodemanager.localizer.cache.target-size-mb的文件,会移动到XXX_DEL_文件夹里面。