对于hdsf中由于坏盘导致的missing block问题,请问大家怎么处理来修复数据的?直接删除的话会不会造成数据丢失?

fish - Hadooper

赞同来自: daofeng

1. 可以使用fsck确认是否备份已经全部丢失,参考:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#fsck 。 2. 参考第1中所使用的命令。 3. HDFS Raid是软件Raid,跟硬件Raid的原理相类似,只不过校验块也是放到HDFS文件系统中的。 4. HDFS Raid是Facebook做的扩展属性,早期版本的HDFS中有直接集成,直接打开就可以使用,新版本可能需要自己做些适配操作。wiki中有描述: https://wiki.apache.org/hadoop/HDFS-RAID  。

macg - 80后IT男

赞同来自: daofeng

一般都是直接删除.  步骤: 1.fsck 确定坏文件和坏目录 2.为删除后恢复做准备.如果坏文件在别的地方有备份最好. 也可直接从hdfs上get到本地试试,当然如果所有block备份块都丢失,那就get不下来了. 3.删除坏文件 4.fsck重新扫描 5.反复执行1-4步骤,直到fsck显示health 6.重启hdfs 7.数据恢复,把步骤2.里面的找到的备份数据put回hdfs上.

fish - Hadooper

赞同来自:

如果所有block的所有备份都丢失了,missing block无法修复。如果多个备份中的某一两个(比如是三备份)丢失了,HDFS会在巡检任务中自行修复。   block的所有备份都missing的文件,就是损坏文件,删不删都一样,文件用不了了。   可以加上HDFS Raid,提高容错性,在某些block所有备份都missing的情况下,还可以做修复操作。

要回复问题请先登录注册