1)在core-site.xml文件中添加这个配置

  1. 在每个节点(不仅仅是主节点)上添加配置 core-site.xml,增加如下内容
  2. <property>
  3. <name>fs.trash.interval</name>
  4. <value></value>
  5. </property>

1440表示在文件放入回收站1440分钟之后才会真得彻底的被删除

2)使用命令行删除文件:

  1. //查看HDFS下的根目录
  2. root@Ubuntu-1:/usr/local/hadoop-2.6.0/bin# hadoop fs -ls /
  3. Found 1 items
  4. drwxr-xr-x - root supergroup 0 2017-05-19 11:02 /test
  1. //删除文件
  2. root@Ubuntu-1:/usr/local/hadoop-2.6.0/bin# hadoop fs -rm -r /test
  3. 17/05/22 15:39:00 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
  4. Moved: 'hdfs://Ubuntu-1:9000/test' to trash at: hdfs://Ubuntu-1:9000/user/root/.Trash/Current
  1. //查看回收站的文件:

root@Ubuntu-1:/usr/local/hadoop-2.6.0# bin/hdfs dfs -ls hdfs://Ubuntu-1:9000/user/root/.Trash/Current
Found 1 items
drwxr-xr-x - root supergroup 0 2017-05-19 11:02 hdfs://Ubuntu-1:9000/user/root/.Trash/Current/test

  1. //撤回回收站的文件
  2. root@Ubuntu-1:/usr/local/hadoop-2.6.0# bin/hadoop fs -mv /user/root/.Trash/Current /user/root/test
  1. //文件已撤回
  2. root@Ubuntu-1:/usr/local/hadoop-2.6.0# bin/hadoop fs -ls
  3. Found 2 items
  4. drwx------ - root supergroup 0 2017-05-22 16:12 .Trash
  5. drwx------ - root supergroup 0 2017-05-22 15:39 test

3)使用java代码操作HDFS的回收站

  1. import java.io.IOException;
  2.  
  3. import org.apache.commons.logging.Log;
  4. import org.apache.commons.logging.LogFactory;
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.fs.FileSystem;
  7. import org.apache.hadoop.fs.Path;
  8. import org.apache.hadoop.fs.Trash;
  9.  
  10. public class RMFile {
  11. private final static Log log = LogFactory.getLog(RMFile.class);
  12. private final static Configuration conf = new Configuration();
  13.  
  14. /**
  15. * Delete a file/directory on hdfs
  16. *
  17. * @param path
  18. * @param recursive
  19. * @return
  20. * @throws IOException
  21. */
  22. public static boolean rm(FileSystem fs, Path path, boolean recursive)
  23. throws IOException {
  24. log.info("rm: " + path + " recursive: " + recursive);
  25. boolean ret = fs.delete(path, recursive);
  26. if (ret)
  27. log.info("rm: " + path);
  28. return ret;
  29.  
  30. }
  31.  
  32. /**
  33. * Delete a file/directory on hdfs,and move a file/directory to Trash
  34. * @param fs
  35. * @param path
  36. * @param recursive
  37. * @param skipTrash
  38. * @return
  39. * @throws IOException
  40. */
  41. public static boolean rm(FileSystem fs, Path path, boolean recursive,
  42. boolean skipTrash) throws IOException {
  43. log.info("rm: " + path + " recursive: " + recursive+" skipTrash:"+skipTrash);
  44. if (!skipTrash) {
  45. Trash trashTmp = new Trash(fs, conf);
  46. if (trashTmp.moveToTrash(path)) {
  47. log.info("Moved to trash: " + path);
  48. return true;
  49. }
  50. }
  51. boolean ret = fs.delete(path, recursive);
  52. if (ret)
  53. log.info("rm: " + path);
  54. return ret;
  55.  
  56. }
  57.  
  58. public static void main(String[] args) throws IOException {
  59. conf.set("fs.default.name", "hdfs://data2.kt:8020/");
  60. FileSystem fs = FileSystem.get(conf);
  61. RMFile.rm(fs,new Path("hdfs://data2.kt:8020/test/testrm"),true,false);
  62. }
  63.  
  64. }

HDFS 的Trash回收站的更多相关文章

  1. HDFS的Trash回收站功能

    文件的删除和恢复 和Linux系统的回收站设计一样,HDFS会为每一个用户创建一个回收站目录:/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,在系统回收站中都一个周期, ...

  2. Hadoop Trash回收站使用指南

    转载:https://blog.csdn.net/sunnyyoona/article/details/78869778 我们在删除一个文件时,遇到如下问题,提示我们不能删除文件放回回收站: sudo ...

  3. CM记录-HDFS清理垃圾回收站

    HDFS数据块所在存储的目录满了的解决方法 1.增加磁盘空间 2.删除回收站 hadoop dfs -du -h 查看各个HDFS空间占用情况 hadoop dfs  -expunge  清空回收站 ...

  4. 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)

    一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...

  5. Hadoop回收站及fs.trash参数详解

    前言: Linux系统里,个人觉得最大的不方便之一就是没有回收站的概念.rm -rf很容易造成极大的损失.而在Hadoop或者说HDFS里面,有trash(回收站)的概念,可以使得数据被误删以后,还可 ...

  6. Hadoop学习(2)-- HDFS

    随着信息技术的高度发展,数据量越来越多,当一个操作系统管辖范围存储不下时,只能将数据分配到更多的磁盘中存储,但是数据分散在多台磁盘上非常不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,因此诞 ...

  7. hadoop进阶---hadoop性能优化(一)---hdfs空间不足的管理优化

    Hadoop 空间不足,hive首先就会没法跑了,进度始终是0%. 将HDFS备份数降低 将默认的备份数3设置为2. 步骤:CDH–>HDFS–>配置–>搜索dfs.replicat ...

  8. 如何有效恢复误删的HDFS文件

    HDFS是大数据领域比较知名的分布式存储系统,作为大数据相关从业人员,每天处理HDFS上的文件数据是常规操作.这就容易带来一个问题,实际操作中对重要数据文件的误删,那么如何恢复这些文件,就显得尤为重要 ...

  9. [DB] HDFS

    体系架构 NameNode HDFS主节点.管理员 接收客户端(命令行.Java程序)的请求:创建目录.上传.下载.删除数据 管理和维护HDFS的日志和元信息 日志文件(edits文件) 二进制文件, ...

随机推荐

  1. 部署:阿里云ECS部署Docker CE

    1 部署阿里云ECS,选择CentOS操作系统,并启动实例: 2 部署Docker CE: a.检查centos版本: $ cat /etc/redhat-release CentOS Linux r ...

  2. Unity3d工具方法小集

    1.获取垂直水平方向上的输入: float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = I ...

  3. 关闭 Identity 插入限制

    当为identity列插入时会报错: 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'xx'中的标识列指定显式值. 但在复制表数据时想带主键一起复制时,这时要设置IDEN ...

  4. 基于阿里云服务器Linux系统部署JavaWeb项目

    前段时间刚完成一个JavaWeb项目,想着怎么部署到服务器上,边学边做,花了点时间终于成功部署了,这里总结记录一下过程中所遇到的问题及解决方法.之所以选择阿里云,考虑到它是使用用户最多也是最广泛的云服 ...

  5. Python 3基础教程18-获取用户键盘输入

    有时候,我们需要获取用户的键盘输入的信息,然后得到信息,拿去做一些事情. 请看下面的demo.py # 练习如何通过键盘获取用户输入 x = input('What is your name?') p ...

  6. 剑指offer-数值的整数次方12

    class Solution: def Power(self, base, exponent): # write code here if base==0: return 0 if exponent= ...

  7. git 创建分支并提交到服务器对应的新分支

    1.切换到源分支 git checkout test 2.在源分支的基础上创建新分支 git branch test1 3.提交到远程分支 git pull 会自动提示下面的命令 git pull - ...

  8. [leetcode-648-Replace Words]

    In English, we have a concept called root, which can be followed by some other words to form another ...

  9. BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...

  10. Delphi组件开发教程指南目录

    用Delphi开发的时间也不短了!刚接触Delphi的时候,就觉得组件这个东西非常方便!根本不必知道组件内部的作为,只要使用就好了!然而用的多了,也不免会对各种delphi组件的内部实现方式产生兴趣! ...