Hadoop回收站是Hadoop文件系统的重要功能,可以恢复误删除的文件和目录。本文为您介绍Hadoop回收站的使用方法。

背景信息

回收站是Hadoop Shell或部分应用(Hive等)对Hadoop FileSystem API在客户端的封装,当客户端配置或者服务端配置打开回收站功能后,Hadoop Shell会调用FileSystem的rename操作,把待删除的文件或者目录移动到/user/<username>/.Trash/Current目录中,否则会调用FileSystem的delete操作。

以hadoop rm命令为例,Hadoop回收站流程图如下所示。trash

开启回收站

如流程图所示,只需配置fs.trash.interval大于0,就会开启回收站,在hdfs\oss\oss-hdfs\jfs上执行rm时,都会放置到回收站目录中。

关闭回收站

一旦关闭回收站后,执行rm便无法再次找回,通常不建议关闭,如果需要关闭可以修改fs.trash.interval为0(HDFS需要重启NameNode组件)。

访问回收站

默认回收站的目录为/user/<username>/.Trash/Current,如果要访问对应到HDFS或者其他存储的回收站目录,可以加上对应前缀,例如hdfs://hdfs-cluster/user/<username>/.Trash/Currentoss://bucket/user/<username>/.Trash/Current等。

清理回收站目录

EMR主要有HDFS、OSS-HDFS、OSS和JindoFS Block模式 (jfs://)四种存储方式,对应的清理规则如下:
  • HDFS:EMR通常默认1440分钟,即放入1天后会自动清理。您可以通过参数fs.trash.interval修改检查点被删除的分钟数。
  • OSS-HDFS:服务端目前固定为7天,即放入7天后会自动清理,暂不支持修改。虽然服务端会自动清理回收站过期数据,但还是建议您定期监测和治理回收站,避免因为未知原因滞留数据占用存储空间。
  • OSS:不支持自动清理,可以通过配置OSS所使用的回收站目录的生命周期来辅助清理回收站,关于如何设置OSS生命周期,请参见基于最后一次修改时间的生命周期规则
  • JindoFS Block 模式:不支持自动清理,需要手动清理。