HDFS block损坏修复

本文详细介绍HDFS中损坏Block的检测与修复流程,包括使用fsck命令检查损坏的文件块,理解DN与NN间的数据恢复机制,以及手动修复与集群自动修复的方法。适用于Hadoop管理员及大数据开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HDFS block损坏修复

校验

检查损失数据块:hdfs fsck -list-corruptfileblocks
查看到详细IP地址: hdfs fsck /directory/application_1587124446083_0011 -locations -blocks -files
然后可以查看namenode log信息定位错误
[hadoop@hadoop001 hadoop]$ hdfs fsck /
Connecting to namenode via http://yws76:50070/fsck?ugi=hdfs&path=%2F
FSCK started by hdfs (auth:SIMPLE) from /192.168.0.76 for path / at Sun Mar 03 14:44:44 CST 2019
…Status: HEALTHY
Total size: 50194618424 B
Total dirs: 354
Total files: 1079
Total symlinks: 0
Total blocks (validated): 992 (avg. block size 50599413 B)
Minimally replicated blocks: 992 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 3.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)

Number of data-nodes: 3
Number of racks: 1
FSCK ended at Sun Mar 03 14:44:45 CST 2019 in 76 milliseconds

The filesystem under path ‘/’ is HEALTHY

自动修复

当数据块损坏后,DN节点执行directoryscan操作之前,都不会发现损坏;
也就是directoryscan操作是间隔6h
dfs.datanode.directoryscan.interval : 21600

在DN向NN进行blockreport前,都不会恢复数据块;
也就是blockreport操作是间隔6h
dfs.blockreport.intervalMsec : 21600000

当NN收到blockreport才会进行恢复操作。

测试

删除块和meta文件:
[hadoop@hadoop001 hadoop]$ rm -rf blk_1075808214 blk_1075808214_2068515.meta
直接重启HDFS,直接模拟损坏效果,然后fsck检查:
集群模式下,会自动修复,看不到损坏的block

手动修复

[hadoop@hadoop001 hadoop]$ hdfs |grep debug
没有输出debug参数的任何信息结果!
故hdfs命令帮助是没有debug的,但是确实有hdfs debug这个组合命令,切记。

修复命令:
[hadoop@hadoop001 hadoop]$ hdfs debug recoverLease -path /xxx.text -retries 10
recoverLease SUCCEEDED on /xxx.text

小结

生产上使用脚本,对hdfs进行监控。
遇到报错,手动进行修复,可以hdfs命令修复,或者手动下载block到本地,然后hdfs删除,再进行上传.数据量大的情况可以直接重新导入,导入之前可以进行数据比对。
hdfs fsck / -delete 这是删除损坏的文件。慎用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值