HDFS 的回收站功能默认是关闭的,需要在 NameNode 的配置文件core - site.xml
中进行配置才能开启3。开启后,当用户通过 HDFS 的 shell 命令(如-rm
/-rmr
)删除文件或目录时,文件或目录并不会被立即删除,而是会被移动到回收站目录中1。HDFS 会为每个用户创建一个回收站目录,路径为/user/用户名/.Trash/
1。以下是具体配置步骤:
1.修改core-site.xml
配置文件
在 Hadoop 集群的所有节点上,编辑$HADOOP_HOME/etc/hadoop/core-site.xml
,添加或修改以下属性:
<configuration>
<!-- 启用回收站,单位:分钟(默认0表示禁用) -->
<property>
<name>fs.trash.interval</name>
<value>1440</value> <!-- 文件在回收站保留24小时(1440分钟) -->
</property>
<!-- 回收站检查间隔(可选),单位:分钟 -->
<property>
<name>fs.trash.checkpoint.interval</name>
<value>60</value> <!-- 每小时检查一次过期文件 -->
</property>
</configuration>
fs.trash.interval
:文件在回收站中的保留时间,超过此时间将被永久删除。fs.trash.checkpoint.interval
:NameNode 检查并清理过期文件的频率,默认与fs.trash.interval
相同。
2.配置生效方式
配置修改后,需要重启 Hadoop 集群使设置生效:
# 停止所有Hadoop服务
$HADOOP_HOME/sbin/stop-all.sh
# 启动所有Hadoop服务
$HADOOP_HOME/sbin/start-all.sh
3. 验证配置
配置生效后,使用 HDFS 命令删除文件时,文件会被移动到用户的回收站目录:
# 删除文件(会进入回收站)
hdfs dfs -rm /path/to/file
# 查看回收站目录(路径格式:/user/用户名/.Trash/时间戳/原文件路径)
hdfs dfs -ls /user/your_username/.Trash
4. 手动管理回收站
恢复文件:
从回收站中复制文件到原路径。
hdfs dfs -cp /user/your_username/.Trash/VERSION/path/to/file /path/to/
提前清空回收站:
hdfs dfs -expunge
注意事项
- API 删除行为:通过 Java API 或 Web UI 删除的文件不会进入回收站,需谨慎操作。
- 存储空间占用:回收站会占用实际 HDFS 存储,确保有足够空间或定期清理。
- 多用户隔离:每个用户的回收站独立,路径为
/user/用户名/.Trash
。