https://blog.csdn.net/xuejingfu1/article/details/52528259
hadoop
里的trash选项默认是关闭的。所以如果要生效,需要提前将trash选项打开。修改conf里的core-site.xml
即可。我们集群的相关配置如下:
<!--Enabling Trash-->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>
</property>
1440分钟就是1天。
fs.trash.interval
是在指在这个回收周期之内,文件实际上是被移动到trash的这个目录下面,而不是马上把数据删除掉。等到回收周期真正到了以后,hdfs才会将数据真正删除。默认的单位是分钟,1440分钟=60*24,刚好是一天。
fs.trash.checkpoint.interval
则是指垃圾回收的检查间隔,应该是小于或者等于fs.trash.interval
。
ExternalTrash
为指定用户添加回收站过期时间
【设置用户trash】
在etc/hadoop 下添加配置文件:externaltrash.xml
并配置:
<!--默认false不开启-->
<property>
<name>fs.user.trash.interval.enable</name>
<value>true</value>
</property>
<!--默认checkpoint间隔就是60分钟-->
<property>
<name>fs.trash.checkpoint.interval.delta</name>
<value>60</value>
</property>
<!--配置指定用户过期时间单位分钟-->
<property>
<name>fs.user.$USER_NAME.trash.interval</name>
<value>1440</value>
</property>
注意:
core-site.xml
中必须已经配有:fs.trash.interval
、 fs.trash.checkpoint.interval
这两个配置。因为ExternalTrash
在加载externaltrash.xml
前,在构造器中会先读这两个值。
fs.trash.checkpoint.interval
值不能<=0,也不能大于 fs.trash.interval
的值。
重启externalTrash:
~/hadoop-current/sbin/hadoop-daemon.sh stop externaltrash
~/hadoop-current/sbin/hadoop-daemon.sh start externaltrash
启动成功后,会有log显示指定用户的过期时间
less /home/hadoop/xxx/logs/hadoop-hadoop-externaltrash-bigdata-nmg-hdfsmaster01.nmg01.log