Hadoop回收站开启与关闭

文件的删除和恢复

默认情况下,Hadoop的回收站是关闭的,需要我们单独进行配置打开回收站。如果打开回收站配置,那么使用FS Shell命令删除的文件不会立即从HDFS中删除。相反,HDFS会将其移动到回收站目录(每个用户在/user//.Trash下都有自己的回收站目录)。只要文件留在回收站中,就可以快速恢复。

开启回收站

只需要在Hadoop的配置文件core-site.xml新增配置项即可

1
2
3
4
5
<property>
<!--这里的4320代表分钟,即60*24*3,回收站保留三天被删除的数据。时间可以根据实际情况具体设定,这里仅作参考。-->
<name>fs.trash.interval</name>
<value>4320</value>
</property>

示例

数据删除

  • 新建测试文件

    1
    2
    3
    4
    [root@master opt]# hadoop fs -cat /test/a.txt
    java
    python
    scala
  • 删除测试文件

    1
    2
    [root@master opt]# hadoop fs -rm /test/a.txt
    17/05/16 19:35:44 INFO fs.TrashPolicyDefault: Moved: 'hdfs://master:9000/test/a.txt' to trash at: hdfs://master:9000/user/root/.Trash/Current/test/a.txt
  • 回收站查看

    1
    2
    3
    4
    5
    6
    7
    [root@master opt]# hadoop fs -ls #配置并执行删除HDFS操作后
    Found 1 items
    drwx------ - root supergroup 0 2017-05-16 19:35 .Trash
    ## 需要注意的是,在我们执行HDFS文件删除之前,".Trash"(回收站)目录是没有被创建的,只有当我们执行删除操作之后,".Trash"(回收站)目录才会被创建。
    #配置前
    [root@master hadoop]# hadoop fs -ls
    ls: `.': No such file or directory
  • 回收站中查看被删除的测试文件内容

    1
    2
    3
    4
    [root@master opt]# hadoop fs -cat .Trash/Current/test/a.txt
    java
    python
    scala

    数据恢复

    既然我们知道了被删除文件在回收站中的具体位置,如果出现数据的误删除,我们恢复数据就比较简单了。这里直接mv或cp到原路径即可。

    1
    2
    3
    4
    5
    6
    [root@master opt]# hadoop fs -mv  .Trash/Current/test/a.txt /test/
    ## 查看数据是否恢复
    [root@master opt]# hadoop fs -cat /test/a.txt
    java
    python
    scala

    数据删除(跳过回收站,慎用)

    在我们执行HDFS文件删除的时候,我们可以指定跳过回收站彻底删除文件,这个时候文件是无法被找回的。要从HDFS中跳过回收站删除文件或文件夹,可以使用以下命令:

    1
    hadoop fs -rm -r -skipTrash /path/fileName

    这里我们进行简单测试。

    1
    2
    3
    4
    5
    6
    ## 删除测试文件并跳过回收站
    [root@master opt]# hadoop fs -rm -r -skipTrash /test/b.txt
    Deleted /test/b.txt
    ## 回收站查看,没有该文件
    [root@master opt]# hadoop fs -ls .Trash/Current/test
    [root@master opt]#
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 henrrywan

请我喝杯咖啡吧~

支付宝
微信