ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HDFS 设置回收站及误删数据恢复

2021-06-21 18:02:07  阅读:205  来源: 互联网

标签:hdfs Trash HDFS user trash 数据恢复 目录 回收站


HDFS会早每一个用户目录下创建一个回收站目录,即:/user/username/.Trash每一个被删除的文件和目录,都会有一个回收周期(fs.trash.interval)。在这个回收周期内,文件实际上会被移动到这个回收站目录下面,可以被用户手动进行恢复。当回收周期到达时,HDFS就会将这个文件/目录彻底删除。
在每个节点的core-site.xml上配置为1天:

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
  <description>minutes between trash checkpoints</description>
</property>

在HDFS内部的具体实现就是在NameNode中开启了一个后台线程Emptier(默认是org.apache.hadoop.fs.TrashPolicyDefault.Emptier,也可以通过fs.trash.classname指定TrashPolicy类),这个线程专门管理和监控系统回收站下面的所有文件/目录,对于已经超过生命周期的文件/目录,这个线程就会自动的删除它们,不过这个管理的粒度很大。另外,用户也可以手动清空回收站(通过hdfs dfs -expunge),也可以使用rm清空回收站,此时,不会再触发回收站操作。Emptier每隔fs.trash.interval分钟就清空一次用户回收站。即先检查每个用户回收站目录,然后删除寿命超过fs.trash.interval的目录,最后将当前存放删除的文件/目录的回收站目录/user/用户名/.Trash/current重命名为一个/user/用户名/.Trash/yyMMddHHmm。也就是从理论上说,在回收站里的目录会保留fs.trash.interval – 2*fs.trash.interval时间区间。
如果使用rm命令时,启用trash的fs.trash.interval参数不用重启后台进程。但要求在/user目录下需要有对应用户的home目录,否则会因为创建目录失败报错。
rmr: Failed to move to trash: hdfs://test1:9000/tmp: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x
成功删除会提示mv到trash目录下。

hdfs dfs -rmr /tmp
Moved: 'hdfs://test1:9000/tmp' to trash at: hdfs://test1:9000/user/hdfs/.Trash/Current
hdfs dfs -ls -R /user/hdfs
drwx------   - hdfs supergroup          0 2014-12-19 11:24 /user/hdfs/.Trash
drwx------   - hdfs supergroup          0 2014-12-19 11:24 /user/hdfs/.Trash/Current
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp/txt
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp/txt/hello
-rw-r--r--   3 hdfs supergroup        137 2014-12-18 11:05 /user/hdfs/hello.txt
-rw-r--r--   3 hdfs supergroup        137 2014-12-18 11:05 /user/hdfs/hello.txt.bak
​#恢复回收站目录:
hdfs dfs -mv /user/hdfs/.Trash/Current/tmp /
-bash-4.1$ hdfs dfs -ls -R /tmp
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /tmp/txt
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /tmp/txt/hello
#清空回收站,实际上是立即执行了一次清理trash的checkpoint。
hdfs dfs -expunge
/12/19 17:31:29 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/hdfs/.Trash/141219173129

标签:hdfs,Trash,HDFS,user,trash,数据恢复,目录,回收站
来源: https://blog.51cto.com/u_15278282/2933729

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有