2016-05-21 54 views
1

我有運行HDFS集羣(Hadoop的2.6.0)報告,但其名稱節點向我報告一個錯誤失蹤塊:我HDFS總是很多損壞的塊

有102個缺失塊。下列文件可能損壞:

當我跳到名稱節點和閱讀登錄(NameNode的文件記錄)我有很多這樣子的句子:

錯誤報告從DatanodeRegistration(10.3.24.71,datanodeUuid = b1aa43eb-bd9c-4e1a-b919-d7c99ad0fcdf,infoPort = 50075,ipcPort = 50020,storageInfo = lv = -56; cid = CID-9f27dfea-17f6-41eb-95d2-50424dc78fa9; nsid = 197210444; c = 0):

無法發送無效塊BP-352432948-10.3.24.65-1433821675295:blk_1074188011_949972

是我的硬盤或其他東西的問題?

+0

你能附加更多的日誌關於ID爲blk_1074188011_949972的區塊? – waltersu

+0

@tnk_peka:回答下方有用嗎? –

回答

2

As described by this

原因

某些文件(S)在HDFS文件系統已損壞或者因失去他們的最後一塊複製品或者乾脆被underreplicated。

注意:由teragen生成的臨時文件或僞造示例數據存在很大風險,因爲默認情況下,這些文件常常將複製因子設置爲1,並且如果託管該一個副本的datanode出現故障,該文件被無可挽回地損壞(例如丟失)。

故障排除步驟

要獲得文件的完整細節是造成你的問題,你可以運行下面的命令:

$ hdfs fsck/-files -blocks -locations 

該命令的輸出將標識複製因子設置您的損壞的文件。

有不同的方式,你能避免這個問題取決於您的數據塊..

1)條件可能僅僅是暫時的,如果你有一個數據在複製的它應該只是自動複製塊到其他數據節點,如果它不是在你自己的運行復制平衡器(如果你使用HBase的不運行HDFS均衡匹配複製因子

2)!)

3)您也可以手動設置複製上一個特定的文件被複制到比當前更高的值,從而哄騙集羣t o創建更多副本。 4)如果它只是當您的推測性執行任務較高時運行作業時創建的臨時文件,則使推測性執行任務與複製因子幾乎匹配,以便它不會在之後抱怨臨時文件工作運行。

作爲最後的手段,如果您確信不需要這些文件,並想只消除錯誤,你可以運行這個命令來自動刪除已損壞的文件:

$ hdfs fsck/-delete