Hadoop回收站机制

1、简介
在HDFS里,删除文件时,不会真正的删除,其实是放入回收站/trash,回收站里的文件可以快速恢复。
可以设置一个时间阀值,当回收站里文件的存放时间超过这个阀值或是回收站被清空时,文件才会被彻底删除,并且释放占用的数据块。

2、回收站功能启用
Hadoop的回收站trash功能默认是关闭的,所以需要在core-site.xml中手动开启。
修改core-site.xml,增加[在每个节点(不仅仅是主节点)上添加配置 /etc/hadoop/conf/core-site.xml,增加如下内容]:
 
fs.trash.interval 
1440 
Number of minutes between trash checkpoints. 
If zero, the trash feature is disabled. 
 
默认是0,单位是分钟,这里设置为1天。
删除数据rm后,会将数据move到当前文件夹下的.Trash目录。

3、回收站日常操作
存放位置
hadoop fs -ls /user/hadoop/.Trash/Current/

查看hdfs存储空间使用情况
hadoop dfsadmin -report

查看回收站占用空间及内容
hadoop dfs -du -h /user/hadoop/.Trash/
hadoop fs -ls /user/hadoop/.Trash/Current/
hadoop dfs -ls /user/hadoop/.Trash/

清空回收站
删除.Trash目录
hadoop fs -rmr .Trash
hadoop fs -rmr .Trash  
hadoop dfs -rmr /user/hadoop/.Trash/*

清空回收站命令(经测试,基本没用)
hdfs dfs -expunge 
bin/hadoop dfs -expunge
bin/hadoop dfs -ls .Trash/Current/user/grid
 
4、hdfs文件直接删除不进回收站
--  hadoop dfs -rmr /tmp/nisj/oss/
--  hadoop dfs -rmr -skipTrash /tmp/nisj/oss/

5、hive表删除情况
hive的表及分区删除,如果回收站功能启用,实际上也是将文件放到回收站的。如果想快速利用空间,实际上也要进行手工清空回收站操作。目前,没有找到删除hive表不进入回收站的方法。
在一次系统跑批中,由于空间有限,要将从oss上下载的数据文件处理完后,立即删除;但表数据文件实际上是进入了回收站,还是占用hdfs空间,所以编写了一个定时脚本进行回收站的清空操作。
[hadoop@emr-header-1 getDataFromOss]$ cat truncate_trash.sh 
#!/usr/bin/env bash

source /etc/profile;
/usr/lib/hadoop-current/bin/hadoop dfs -rmr /user/hadoop/.Trash/* >>/home/hadoop/nisj/getDataFromOss/trash_truncate.log 2>&1


你可能感兴趣的:(Hadoop,#,Hdfs)