hdfs数据块损坏及修复
hadoop之hdfs数据块损坏及修复损坏的原因
HDFS在机器断电或意外崩溃的情况下,有可能出现正在写的数据丢失的问题。再次重启HDFS后,发现hdfs无法启动,查看日志后发现,一直处于安全模式。
1、场景一:断电导致HDFS服务不正常或显示块损坏
模拟损坏效果:
直接的datanode上删除文件一个block的三副本
node-1:rm -rf 数据块 元数据
node-2:rm -rf 数据块 元数据
node-3:rm -rf 数据块 元数据检查hdfs文件系统健康:hdfs fsck /path
输出损坏的块及其所属的文件列表:hdfs fsck /path -list-corruptfileblocks
定位文件的哪些块分布在哪些机器:
[*]-file 文件分块信息
[*]-blocks 在带 -files 参数后才显示block信息
[*]-locations 在带-blocks参数后才显示block块所在datanode的具体ip位置
[*]-racks 在带-files参数后显示机架位置
hdfs fsck / -delete 直接删除损坏的文件
-files -locations -blocks -racks 号文件显示 坏文件不显示
hdfs debug recoverLease -path 文件位置 -retries 重试次数 #修复指定路径的hdfs文件,尝试多次
自动修复
hdfs自动修复损坏的数据块,当数据块损坏后,DN节点执行directoryscan(datanode进行内存和磁盘那数据集块校验)操作之前,都不会发现损坏。
dfs.datanode.directoryscan.interval:21600
在DN向NN进行blockreport前,都不会恢复数据块
dfs.blockreport.intervalMesc:21600
最终当NN收到blockreport才会进行恢复操作
生产中倾向于使用手动修复的方法去修复损坏的数据块。
https://blog.51cto.com/u_15323256/4863016
页:
[1]