事情经过:
早晨上班查看集群时发现集群HDFS和Yarn爆红,如下:
点进去发现HDFS报错为xxx机器的/data空间少于%10,/data是我们集群的数据存储文件夹.Yarn的报错为xxx机器日志存储文件空间不足.该日志存储位置也是在/data下面的.
集群因很久没有做过扩容而且数据一直在增加,在跑大的MR任务的时候,因为MR会生成临时文件,时常因为临时文件多而发出空间不足的警告.但之前的警告都是黄色的,这次的比之前严重很多.可用空间从10%一直慢慢递减到5%,还在继续减少.
看到这个情况,吓坏了,赶紧删除无用数据.倒腾了几个小时发现删除数据的作用微乎其微,无用数据毕竟还是占很小的一部分.后来登录到报错的几台机器上,查看具体是哪个地方磁盘占用飙升.
cd /data
df -lh 该命令列出了当前磁盘占用情况.
du -h -d1 列出当前目录下每个文件占用多大.
发现运行du -h -d1后,/data/yarn下的占用比平时多很多,达到了300多G.继续往里追,最终确认为application_xxx_xxx的任务缓存了太多文件造成了.因为一个任务会分布式运行,分配到该任务的机器刚好都是运行了这个application.
解决办法:
后续的解决办法只要针对这个应用即可.从yarn的应用进程界面搜索这个application id来确定是哪个应用.
我们的应用是一个yarn资源队列,通过重启该队列解决了catch文件过多的问题.应用重启后会自动清空缓存文件.
希望能帮到您.感谢.