2012-01-10 162 views
2

我正在使用hadoop 0.20.append和hbase 0.90.0。我上傳了一些數據到Hbase,然後殺死了HMaster和Namenode用於評估目的。在此之後,我向Hbase添加了更多的數據,並且可以在hbase shell中看到它們。Hadoop損壞塊

現在當我啓動Namenode時,我遇到了問題。該日誌說,名稱節點處於安全模式,我無法添加或刪除內容,因爲它在Safemode中。

此外,當我剛跑

./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 

但即使以後得到腐敗塊相同的列表也試過。任何想法如何解決這個問題,並恢復我的內容?

+1

你離開了安全模式:'hadoop dfsadmin -safemode leave' – frail 2012-01-10 09:55:40

+0

是的。在給出這些之後,如果我將任何數據放入Hadoop中,則會出現Inconsistent狀態異常,並且無法恢復我的數據 – sriram 2012-01-10 14:21:55

回答

-1

因爲它提示,-openforwrite意味着當文件集被寫入時,它們沒有關閉。所以如果你可以看看fsck的細節,你會看到那些仍然報告由hdfs fsck.I打開的文件已經面臨這個問題和唯一的解決方案是刪除顯示在fsck中打開的文件。讓我知道任何進一步的問題。

0

我有類似的問題。根據我的經驗,他們無法恢復。創建文件的過程被中斷,並使其無人看管。你可以看到,如果你可以通過閱讀:

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

而且它是安全的刪除它們,因爲失敗的進程負責稍後重試這些文件的創建。 他們應該被刪除,因爲這種不一致可能會導致未來的問題。