本地文件删除了,怎么从hdfs上恢复到本地同一文件(md5值一样)
此处大家都知道的两种命令,get和copyToLocal命令,除此之外实际上还有另一种
1.使用get命令
hdfs dfs -get /tmp/200M.data /tmp/
2.使用copyToLocal命令
hdfs dfs -copyToLocal /tmp/200M.data /tmp/
第三种方法可能就有点儿绕,也有点儿复杂,但是也是一种方法
1.通过命令找到文件的块和副本在各服务器上存储的具体位置
hdfs fsck /tmp/200M.data -files -blocks -locations
通过这个命令可以找到 如图标注
2.在对应大数据集群的服务器上找到对应的block(几个副本就有几个)
此处假设是a/b/c三台服务器,要将文件复原到a服务器上
在三台服务器都执行以下命令,找block位置
find / -name blk_*****
3.将b、c服务器的两个block都发到a服务器上(三个块都在一台服务器)
scp b/c块位置 a-ip:/tmp
上述/tmp可以是a的任意位置,能找到即可
4.将几个块合并成一个
cat a服务器原本的块位置 /tmp/blk_*** >200M.data
此处‘a服务器原本的块位置’就是第2步a找到的位置
5.合并完成的200M.data就是原始的本地文件啦
可以检查MD5看看是不是同一个文件
md5sum 200M.data