HDFS误删数据如何恢复
程序员文章站
2024-03-22 13:43:04
...
今天在用linux命令查询hdfs数据时。因为之前刚把测试环境删除,所以执行了
hadoop fs -rm -r /warehouse/hdw/ods/ods_tbl_et_live_message_log_test
接下来准备去查询正式表的时候,把test去掉之后就直接执行了。整个目录都被我干掉了。。。。
心慌一下忽然想起来可以恢复,感觉去操作了一波,但是要引以为戒。。接下来上正事:
HDFS 为我们提供了垃圾箱的功能,也就是当我们执行 hadoop fs -rm -r xxx
命令之后,文件并不是马上被删除,而是会被移动到执行这个操作用户的 .Trash
目录下,等到一定的时间后才会执行真正的删除操作。
首先进入对应用户的目录下。我使用的hdfs用户删除的:
hadoop fs -ls /user/hdfs/.Trash/Current/warehouse/hdw/ods/ods_tbl_et_live_message_log
上图是我之前删除的记录,现在还在。刚刚删除的已经恢复了。
接下来找到自己误删的数据,可以mv到原来的目录下就可以了。如果原来 的目录不在了可以先创建,记得注意用户权限
hadoop fs -mv /user/hdfs/.Trash/Current/warehouse/hdw/ods/ods_tbl_et_live_message_log/pt=20201026 /warehouse/hdw/ods/ods_tbl_et_live_message_log/
数据恢复情况:
查之前的任意一天的数据也是对的上的:
不过要实现这个功能的前提是要求我们启用 fs.trash.interval
参数,默认是 0 代表不启用垃圾箱功能。
该配置是说,文件被删除会保留到 .Trash
目录下,具体时间看设置,超过这个时间被删除的文件就会真正被删除。所以为了误删除操作,强烈建议开启 HDFS 回收站功能。
但是作为一名合格的程序员,任何删除操作都要谨慎谨慎再谨慎。引以为戒
上一篇: hadoop3 EC测试
下一篇: 【Hadoop学习】HDFS基本原理