spark历史任务日志占满hdfs

发现cloudera上yarn nodeManager告警,提示

 进入NodeManager列表,发现一个节点存在告警

猜测可能是日志写入失败,可能是磁盘不够,进入集群节点列表,查看这个NodeManager所在节点状态,发现磁盘将要被占满,因为磁盘很大,猜测应该是hdfs上存储了什么大文件。

再进入dataNode节点列表,确实是节点占用存储太大,已经在告警磁盘可用空间不足。

登录到这个dataNode节点服务器:

执行:hadoop fs -du -h /

查看是哪个文件占用过大,如此一直找到最后一个文件夹/user/spark/spark2ApplicationHistory,发现这个文件夹几乎占满了磁盘,这个目录是spark的日志目录,下面确实有大量文件,每个文件记录了一个spark任务运行期间日志。

.inprogress结尾的是正在运行任务,但是发现有好多.inprogress结尾的任务在spark任务管理界面并没有找到对应任务,应该是异常结束的,导致日志后缀没有去掉。

确认好哪些日志文件可以删除后,使用:hadoop fs -rm -skipTrash 文件路径   (-skipTrash请慎用,删除不经过回收站),删除有风险,大侠们请做好保护工作,此处只提供方法概不负责,哈哈~

删除后cloudera界面状态很快恢复。

对于这个日志目录为什么没有自动删除,还在找问题和解决方法,后续敬请期待。

也可以通过下面脚本检查指定文件块占用情况:

#!/bin/bash
file_name="$1"
if [ -z "$file_name" ];then
	echo "Pls input file path"
	exit 1
fi

cat "$file_name"| while read line
do
	hadoop fsck $line -blocks > temp.log
	echo $line >> final.log
	tail -11 temp.log >> final.log
	echo "">temp.log
	echo "Finish check $line"
done

  

原文地址:https://www.cnblogs.com/liwutao/p/11796995.html