Hadoop损坏了块

时间:2012-01-10 09:12:45

标签: hadoop hbase

我使用的是hadoop 0.20.append和hbase 0.90.0。我将少量数据上传到Hbase,然后杀死了HMaster和Namenode用于评估目的。在此之后,我向Hbase添加了更多数据,我可以在hbase shell中看到它们。

现在,当我开始使用Namenode时,我遇到了问题。日志表明名称节点处于安全模式,我无法添加或删除安全模式中的内容。

当我刚跑完时

./bin/hadoop fsck /

我明白了,

............Status: HEALTHY
 Total size:    12034 B (Total open files size: 4762 B)
 Total dirs:    22
 Total files:   12 (Files currently being written: 3)
 Total blocks (validated):      12 (avg. block size 1002 B) (Total open file blocks (not validated): 3)
 Minimally replicated blocks:   12 (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

路径'/'下的文件系统是健康

但是当我运行./bin/hadoop fsck / -openforwrite

我明白了,

Total size:    16796 B
 Total dirs:    22
 Total files:   15
 Total blocks (validated):      15 (avg. block size 1119 B)
  ********************************
  CORRUPT FILES:        2
  ********************************
 Minimally replicated blocks:   13 (86.666664 %)
 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:     2.6
 Corrupt blocks:                0
 Missing replicas:              0 (0.0 %)
 Number of data-nodes:          3
 Number of racks:               1

路径'/'下的文件系统是CORRUPT

以及腐败街区的信息。

也尝试使用

./bin/hadoop fsck / -move

但即使在获得相同的损坏块列表之后。关于如何解决这个问题并恢复我的内容的任何想法?

2 个答案:

答案 0 :(得分:0)

我有类似的问题。根据我的经验,他们无法恢复。创建文件的过程中断,无人看管。您可以看看是否可以通过以下方式阅读它们:

hdfs dfs -cat /path/to/file
hdfs dfs -get /path/to/file local_file

删除它们是安全的,因为失败的进程负责稍后再次重试这些文件的创建。 它们应该被删除,因为这种不一致可能会导致未来的问题。

答案 1 :(得分:-1)

正如它所暗示的那样,-openforwrite意味着当文件集被写入时,它们没有被关闭。所以,如果你可以查看fsck细节,你会看到那些仍然由hdfs fsck报告打开的文件。我已经面对这个问题和唯一的解决方案是删除在fsck中显示打开的文件。让我知道任何进一步的问题。