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

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

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

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

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

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

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

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

import java.io.IOException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.Trash; public class RMFile {
private final static Log log = LogFactory.getLog(RMFile.class);
private final static Configuration conf = new Configuration(); /**
* Delete a file/directory on hdfs
*
* @param path
* @param recursive
* @return
* @throws IOException
*/
public static boolean rm(FileSystem fs, Path path, boolean recursive)
throws IOException {
log.info("rm: " + path + " recursive: " + recursive);
boolean ret = fs.delete(path, recursive);
if (ret)
log.info("rm: " + path);
return ret; } /**
* Delete a file/directory on hdfs,and move a file/directory to Trash
* @param fs
* @param path
* @param recursive
* @param skipTrash
* @return
* @throws IOException
*/
public static boolean rm(FileSystem fs, Path path, boolean recursive,
boolean skipTrash) throws IOException {
log.info("rm: " + path + " recursive: " + recursive+" skipTrash:"+skipTrash);
if (!skipTrash) {
Trash trashTmp = new Trash(fs, conf);
if (trashTmp.moveToTrash(path)) {
log.info("Moved to trash: " + path);
return true;
}
}
boolean ret = fs.delete(path, recursive);
if (ret)
log.info("rm: " + path);
return ret; } public static void main(String[] args) throws IOException {
conf.set("fs.default.name", "hdfs://data2.kt:8020/");
FileSystem fs = FileSystem.get(conf);
RMFile.rm(fs,new Path("hdfs://data2.kt:8020/test/testrm"),true,false);
} }

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. Hbase读写流程和寻址机制

    写操作流程 (1) Client通过Zookeeper的调度,向RegionServer发出写数据请求,在Region中写数据. (2) 数据被写入Region的MemStore,直到MemStore ...

  2. PHP通过copy()函数来复制一个文件

    PHP通过copy()函数来复制一个文件.用法如下: bool copy(string $source, string $dest) 其中$source是源文件的路径,$dest是目的文件的路径.函数 ...

  3. Can’t delete list item in Sharepoint2013

         Today,I have meet a very strange error.When I attempt to delete a item from a list,I recieve an ...

  4. linux命令大全(转载)

    在搭建openstack时遇到问题,导致上网查询相关信息.找到一篇不错的文章,希望对大家有用.下附地址: http://blog.csdn.net/junbujianwpl/article/detai ...

  5. [网站日志]今天早上遭遇的CPU 100%情况

    今天早上9:06左右,Windows性能监视器监测到主站的Web服务器出现了CPU 100%的情况,伴随着Requests/Sec的上升,详见下图. 上图中红色线条表示的是%Processor Tim ...

  6. 各种网站,app的手机号绑定真坑爹

    各种网站,app的手机号绑定真坑爹,无力吐槽,哎

  7. 「日常训练」 Finite or not? (CFR483D2C)

    题意(Codeforces 984C) 给定p,q,b" role="presentation">p,q,bp,q,b,问pq" role="p ...

  8. 【题解搬运】PAT_L1-009 N个数求和

    从我原来的博客上搬运.原先blog作废. (伪)水题+1,旨在继续摸清这个blog(囧 题目 就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和 ...

  9. Assetbundle1

    AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法也可以来自Memory,用CreateFromMemory( ...

  10. 07-Mysql数据库----数据类型

    介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考链接:http://www.runoob.com/mysql/mysql-data- ...