欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

HDFS误删数据如何恢复

上图是我之前删除的记录,现在还在。刚刚删除的已经恢复了。

接下来找到自己误删的数据,可以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/

数据恢复情况:

HDFS误删数据如何恢复

查之前的任意一天的数据也是对的上的:

HDFS误删数据如何恢复

不过要实现这个功能的前提是要求我们启用 fs.trash.interval 参数,默认是 0 代表不启用垃圾箱功能。

该配置是说,文件被删除会保留到 .Trash 目录下,具体时间看设置,超过这个时间被删除的文件就会真正被删除。所以为了误删除操作,强烈建议开启 HDFS 回收站功能。

但是作为一名合格的程序员,任何删除操作都要谨慎谨慎再谨慎。引以为戒

相关标签: hdfs hive