Hadoop回收站机制

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

2、回收站功能启用
Hadoop的回收站trash功能默认是关闭的,所以需要在core-site.xml中手动开启。
修改core-site.xml,增加[在每个节点(不仅仅是主节点)上添加配置 /etc/hadoop/conf/core-site.xml,增加如下内容]:
[html]  view plain  copy
  1. <property>   
  2. <name>fs.trash.interval</name>   
  3. <value>1440</value>   
  4. <description>Number of minutes between trash checkpoints.   
  5. If zero, the trash feature is disabled.   
  6. </description>   
  7. </property>  
默认是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 
[java]  view plain  copy
  1. #!/usr/bin/env bash  
  2.   
  3. source /etc/profile;  
  4. /usr/lib/hadoop-current/bin/hadoop dfs -rmr /user/hadoop/.Trash/* >>/home/hadoop/nisj/getDataFromOss/trash_truncate.log 2>&1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值