HDFS坏块处理

告警内容:

Missing Blocks

解决方法:

1.重启HDFS服务

./stop-dfs.sh   ./start-dfs.sh   或者在某些产品的集群监控管理界面操作,比FI Manager、Cloudera Manager、ambari等等

重启后观察(重启时间较长,10-20分钟后查看),告警解除;

2.如重启HDFS不能修复,可通过手动检查坏块并删除坏块

hadoop fsck /     #扫描坏块

hadoop fsck -delete 坏块地址      #扫描坏块后查看,坏块地址为”:MISSING“之前的地址

再重新检查坏块情况和坏块告警情况

HDFS 中,`hdfs fsck` 工具是一个非常有用的诊断和修复工具。当遇到损坏或丢失的块时,可以使用 `fsck` 来帮助定位问题,并结合其他命令手工修复这些问题。以下是关于如何利用 `hdfs fsck` 进行块的手工修复步骤介绍。 ### 使用 `hdfs fsck` 定位问题 1. **检查文件系统的完整性**: 首先需要确认哪些路径下存在坏块或丢失块。你可以通过运行以下命令来扫描整个文件系统: ```bash hdfs fsck / -files -blocks -locations > fsck_report.txt ``` 上述命令将生成一个包含所有文件及其对应块详细信息的日志文件 (`fsck_report.txt`),其中包含了每个文件的状态(包括是否有丢失块)、块编号、所在位置等关键信息。 2. **查找有问题的文件和块**: 分析刚才保存的日志文件,特别是那些标注了“CORRUPT”、“MISSING”的条目,确定具体的受影响文件名及对应的block ID。 3. **获取更多信息**: 对于每一个存在问题的块,可以通过 `-list-corruptfileblocks` 参数进一步获得其确切的位置和其他相关信息: ```bash hdfs fsck / -list-corruptfileblocks ``` ### 手工修复缺失或损坏的块 #### 方案一:尝试从其它副本恢复 4. **验证是否有多余副本可用**: 根据前面收集的信息,如果某个丢失块还存在于其他的 DataNode 节点上,则可以直接让 NameNode 将该块重新分配给新的目标节点: ```bash hdfs dfsadmin -recoverCorruptBlocks <path_to_file> ``` 5. **等待自动修复完成**: 提交修复请求后,Hadoop 会自动处理并将块复制到合适的节点上去。这个过程可能会花费一些时间取决于集群大小和个人设置。 #### 方案二:手动删除并重传数据 6. **移除不可用的块记录**: 若确实找不到剩余的有效副本,则只能选择把相关的元数据清理干净再另行补充数据源。注意此步需谨慎操作以免误删重要资料! ```bash hdfs debug recoverLease -path <corrupted_filepath> [-namenodeRpcAddress <nn_address>] ``` 7. **重新上传正确的数据集**: 清理完旧有的错误引用之后就可以按照标准流程再次上传完整的正确版文件至相应目录内替换原有内容了。 8. **验证修复结果**: 最终别忘了再次执行一次全面性的 `hdfs fsck` 测试以确保所有的更改都已生效并且没有残留下来的问题。 --- 总结来说,虽然HDFS自带了一定程度上的自动化纠错能力,但在实际应用中难免还是会碰到各种复杂状况下的数据一致性挑战。掌握好 `hdfs fsck` 的基本用法以及了解它的辅助选项能够让我们更好地应对这些突发难题。如果你还需要更多有关维护HDFS稳定运行的经验分享,请参考下方提供的相关问题列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值