有人问我以下问题。
采访者:如何在hdfs中恢复已删除的文件。我:从垃圾目录我们可以复制/移回原来的目录。记者:除了回收垃圾,还有别的办法吗。我:我说不。
所以我的问题是,是否真的有任何方法可以恢复删除的文件,或者面试官只是让我测试一下我的信心。
我发现了下面的恢复方法,它不同于hdfs-cp/mv,但它也从垃圾中获取文件。
hadoop distcp-D ipc.client.fackback to simple auth allowed=true-D dfs.checksum.tpe=CCRC32C-m 10-pb-update/users/vijay/.Trash//application/data/vijay;
Hadoop从2.1.0版本开始提供HDFS快照(snapshot(功能你可以尝试使用它
首先,创建SnapShot
hdfs dfsadmin -allowSnapshot /user/hdfs/important
hdfs dfs -createSnapshot /user/hdfs/important important-snapshot
接下来,尝试删除一个文件
hdfs dfs -rm -r /user/hdfs/important/important-file.txt
最后,恢复
hdfs dfs -ls /user/hdfs/important/.snapshot/
hdfs dfs -cp /user/hdfs/important/.snapshot/important-snapshot/important-file.txt /user/hdfs/important/
hdfs dfs -cat /user/hdfs/important/important-file.txt
p.S:你必须使用CP命令(而不是MV命令(以这种方式恢复删除的文件,因为快照中删除的文件只是读取文件
希望我的答案能帮助你