一、现象
hdfs删除后,3天了还不删除,故排查排查问题
二、排查过程及原理
Trash机制,叫做回收站或者垃圾桶,默认情况下是不开启的。启用 Trash 功能后,从 HDFS 中删除某些内容时,文件或目录不会立即被清除,它们将被移动到回收站Current目录中(/user/{username}/.Trash/current)。
Trash Checkpoint检查点仅仅是用户回收站下的一个目录,用于
存储在创建检查点之前删除的所有文件或目录。如果你想查看回收站目录,可以在
/user/{username}/.Trash/{timestamp_of_checkpoint_creation}处看到:
最近删除的文件被移动到回收站 Current 目录,并且在fs.trash.interva时间间隔内,HDFS 会为在 Current 回收站目录下的文件创建检查点
/user/{username}/.Trash/<日期>,并在过期时删除旧的检查点。
在core-site.xml配置文件中存在相关配置
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
#fs.trash.interval:分钟数,当超过这个分钟数后检查点会被删除。如果为零,Trash 回收站功能将被禁用。
<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
</property>
#fs.trash.checkpoint.interval:检查点创建的时间间隔(单位为分钟)。其值应该小于或等于fs.trash.interval。如果为零,则将该值设置为fs.trash.interval的值。每次运行检查点时,它都会从当前版本中创建一个新的检查点,并删除在数分钟之前创建的检查点。
在2023-06-19删除完的文件后,将删除的文件移动到/user/hadoop/.Trash/current文件夹下,3天后2023-06-22检查点生成机制运行,将回收站中的数据移动到/user/hadoop/.Trash/20230622080017,此时也会删除当前时间三天前过期的检查点数据,在2023-06-25检查点生成后,没有把/user/hadoop/.Trash/20230622080017的原因,因为回收站数据量比较大,时间戳时间稍晚20230622080017无法被正常删除。