使用OSS-HDFS服务回收站
使用OSS-HDFS回收站时,需要客户端将待删除文件挪至指定目录,并由服务端定时清理该目录下的数据。
前提条件
使用4.5.1及以上版本JindoSDK。下载地址,请参见GitHub。
通过客户端使用OSS-HDFS服务回收站
当您从OSS-HDFS服务删除文件时,文件不会立即被删除,而是转至
/user/<username>/.Trash/Current
目录下。经过30分钟后,
Current
目录下的文件会被转至/user/<username>/.Trash/<timestamp>
目录下。说明<timestamp>以Unix时间戳的形式展示,表示自UTC时间1970年01月01号开始的秒数。<timestamp>用于表示某一时间段内被删除的文件,会被归类到带时间戳的目录下。
经过7天后,
/user/<username>/.Trash/<timestamp>
目录被永久删除。您在执行删除操作的7天内,可以随时从对应的时间戳目录下恢复删除的文件。
通过Hadoop FileSystem Shell使用OSS-HDFS服务回收站
通过Hadoop FileSystem Shell命令删除文件。
命令如下:
hadoop fs -rm oss://examplebucket/dir/subdir
开启回收站功能。
客户端的Hadoop FileSystem Shell命令默认不开启回收站功能。您需要在
core-site.xml
文件通过配置项fs.trash.interval
开启回收站功能。<property> <name>fs.trash.interval</name> <value>1440</value> </property>
<value>表示设置文件保留在回收站中的时间阈值,单位为分钟,默认值为1440。当文件保存时间超过该阈值时,系统将自动从回收站中永久删除该文件。
重要为避免误删除文件,建议您使用默认值1440。如果设置为0,表示禁用回收站。
不建议您将该参数设置过大,避免回收站中过多的文件占用集群的可用空间。
开启回收站功能后,客户端会自动将执行命令转换为
hadoop fs -mv oss://examplebucket/dir/subdir /user/<username>/.Trash/Current/dir/subdir
,并由服务端负责定时清理。如果您希望立即删除文件,释放空间。您可以添加-skipTrash参数。
通过Hadoop生态组件使用OSS-HDFS服务回收站
Hive、Spark和Flink等组件在使用FileSystem(HDFS)的Delete接口时,将立即删除文件。
如果您希望使用OSS-HDFS服务回收站时,您需要显式调用FileSystem的rename接口,将目标文件手动挪至/user/<username>/.Trash/Current
目录下,由OSS-HDFS服务端负责定期删除。