习惯了 windows mac 以后我们都爱用一些回收站,删除了文件不是太害怕,但是如果使用linux ,有时候使用root 用户不小心rm -rf file,可能会后悔莫及,同样在hdfs上也是有 类似情况的,你不小心删除了一个文件,还是希望可以找回了的,为此我们希望给hdfs建立文件回收站,为后悔买一次保险
其实为hdfs 建立回收站还是比较简单,就是在 core-site.xml做出相应的声明,并在hdfs 根目录下 创建 相应的 home 目录 ,一般是 /user/具体操作用户名,另外就是修改权限权限,要注意的就是,不是你的文件 你删除不了,没有删除权限的 你也操作不了。
我们老大 希望 回收站可以保存两天的内容,超过两天后 hdfs会自动清理掉,并且一天 检查一次 回收站
<property>
<name>fs.trash.interval</name>
<value>2840</value>
<description>Number of minutes between trash checkpoints. If zero, the trash feature is disabled</description>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>
<description> Every time the checkpointer runs it creates a new checkpoint out of current and removes checkpoints created more than fs.trash.interval minutes ago.</description>
</property>
这个需要在 Master NameNode上修改并同步到 所有的DataNode节点和 任务提交节点。
单单做了这些 当然还是不够的,我们会发现 还是会报错的
比如 在我们还没有在 hdfs上创建 /user 目录
因为不是hdfs的root 用户无法再hdfs根目录下创建 该用户自己的回收站,所以就是要自己动手了,切换到 hdfs的root 用户,创建 /user ,并把权限设置为 777,因为有多个用户同时操作 hdfs
之后开始删除
发现还是有问题,当然就是权限问题
也就是不是你的文件你删除不了,那就找属于自己的就可以了
提示我们已经转移到回收站了,如果两天内不打算恢复它的话,hdfs 会自动清理掉它,如果想恢复,当然也是可以的,如果想提前删除,当然也是可以的。
想恢复的话 就是使用 hadoop fs -mv 命令
要注意的就是目录的路径,可以使用 hadoop fs -ls -R /user 先查看了具体的路径,在做,还要注意权限问题
想提前清理的话,这个好像只能使用 supergroup 下的root 用户才可以的
,我使用 普通用户是会报权限操作的问题
hadoop fs -expunge