vlambda博客
学习文章列表

HDFS块损坏了,是如何修复

准备(模拟块丢失)

创建一个文件夹

hdfs dfs -mkdir /blockrecover

准备一个文件

echo "hello world" >> test.txt

上传文件到hdfs

hdfs dfs -put test.txt/blockrecover

检查健康状态

hdfs fsck /

HDFS块损坏了,是如何修复

查看一下block信息

HDFS块损坏了,是如何修复

在data目录查找block信息

find ./data -name "blk_1073741826_1002*"

HDFS块损坏了,是如何修复

删除block和meta信息

找到之后cd进去吧meta和对应的block删除了,模拟块丢失

HDFS块损坏了,是如何修复

重启hdfs(因为默认fsck间隔时间是6个小时,这里重启)

再来检查

hdfs fsck /blockrecover

HDFS块损坏了,是如何修复

手动修复

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

HDFS块损坏了,是如何修复

注意这个必须要指定到文件,目录是不行的

这样再次检查,就发现是ok了

block也恢复了