HDFS块损坏了,是如何修复
准备(模拟块丢失)
创建一个文件夹
hdfs dfs -mkdir /blockrecover
准备一个文件
echo "hello world" test.txt
上传文件到hdfs
hdfs dfs -put test.txt/blockrecover
检查健康状态
hdfs fsck /
查看一下block信息
在data目录查找block信息
find ./data -name "blk_1073741826_1002*"
删除block和meta信息
找到之后cd进去吧meta和对应的block删除了,模拟块丢失
重启hdfs(因为默认fsck间隔时间是6个小时,这里重启)
再来检查
hdfs fsck /blockrecover
手动修复
hdfs debug
Usage: hdfs debug <command> [arguments]
These commands are for advanced users only.
Incorrect usages may result in data loss. Use at your own risk.
verifyMeta -meta <metadata-file> [-block <block-file>]
computeMeta -block <block-file> -out <output-metadata-file>
recoverLease -path <path> [-retries <num-retries>]
这个命令是隐藏的,可能是为了防止滥用,只让专业人员知道
修复命令
hdfs debug recoverLease -path /blockrecover/test.txt -retries 3
注意这个必须要指定到文件,目录是不行的
这样再次检查,就发现是ok了
block也恢复了