目前來看,致使hdfs一直處於safemode模式最直接的緣由是已成功複製的塊的比例沒有達到默認值,塊的損壞也會形成一直處於安全模式。安全
1)文件系統中有損壞的文件,使用fsck命令來查看oop
hadoop fsck /
以上是查看hdfs的根目錄下的全部文件健康情況,若是有損壞的文件,就會提示:命令行
The filesystem under path '/' is CORRUPT(損壞)
接下來就是排錯,查看到底是哪一個目錄下有損壞文件,使用fsck遍歷檢查根目錄下的每一個子目錄,查看時候有損壞文件,例如查看user目錄:3d
hadoop fsck /user
找到損壞的文件,刪除掉便可,最終在使用fsck檢查hdfs文件系統已無缺:code
可是看到Missing replicas一欄中,有321個副本丟失了,好比某個文件的複製因子是3,結果只有2個,那麼表示有1個副本丟失了,全部的文件丟失副本數以後就是Missing replicas。一樣使用fsck遍歷全部目錄,查看到底是那些文件的冗餘數量不夠。blog
首先查看/user/Englishinput,命令以下:hadoop
hadoop fsck /user/EnglishInput -files -blocks -locations
僅僅這一個目錄就有265個備份丟失,刪除此目錄。input
Under開頭的記錄就是異常塊的狀況,數字.開頭的就是正常的塊狀況。io
2)如下就是hdfs正常狀況的形式:class
紅色的箭頭表示對一個文件的檢查狀況:1 block(s)表示這個文件只由一個塊組成,ok表示文件處於正常狀態。
藍色箭頭指示了「Average block replication」塊平均複製因子2.8,由於其中有一個文件傳到集羣上是系統配置的複製因子是1,所以其複製因子是1,才致使平均複製因子是1.
3)修改配置文件中的複製因子值,並不會改變修改以前集羣中文件的複製因子,必須重啓hadoop才能使其生效。也可使用命令行的方式修改,不用從新啓動便可生效,不過依然不會修改以前文件的複製因子。
4)使用第二種方法的結果以下所示;