天天看點

node is in safe mode

問題描述

上傳或者操作hdfs的檔案時候遇到

node is in safe mode

.(處于安全模式),處于這個模式雖然不能進行修改檔案的操作,但是可以

浏覽

目錄結構、

檢視

檔案内容的。

node is in safe mode

解決方案

那就是退出安全模式

離開安全模式,指令

hadoop dfsadmin -safemode leave

擴充指令

檢視安全模式狀态,指令

hadoop dfsadmin -safemode get

進入安全模式狀态,指令

hadoop dfsadmin -safemode enter

(叢集更新維護時使用)

那麼hdfs什麼時候會進入安全模式?

①啟動或者重新啟動hdfs時;②HDFS維護更新時

安全模式是hadoop的一種

保護機制

,用于

保證叢集中的資料塊

的安全性。

當叢集

啟動

的時候,會

首先

進入安全模式。當系統處于安全模式時會檢查資料塊的完整性。假設我們設定的副本數(即參數

dfs.replication

)是5,那麼在datanode上就應該有5個副本存在,假設隻存在3個副本,那麼比例就是3/5=0.6。在配置檔案

hdfs-default.xml

中定義了一個

最小的副本的副本率

0.999,如圖

node is in safe mode

我們的副本率0.6明顯小于0.99,是以系統會自動的複制副本到其他的dataNode,使得副本率不小于0.999.如果系統中有8個副本,超過我們設定的5個副本,那麼系統也會删除多餘的3個副本。

安全模式對我們有什麼影響呢?

這時,不允許用戶端進行任何修改檔案的操作,包括上傳檔案,删除檔案,重命名,建立檔案夾等操作。比如

建立檔案

時,在源代碼中就有對安全模式的判斷,如圖所示

node is in safe mode

當我們在安全模式下進行

修改檔案

操作時,會報如下錯誤,如圖

node is in safe mode

正常情況下,安全模式會運作一段時間自動退出的,隻需要我們稍等一會就行了,到底等多長時間呢,我們可以通過50070端口檢視安全模式退出的剩餘時間,如圖

node is in safe mode

安全模式是hadoop的一種保護機制,在啟動時,最好是等待叢集自動退出,然後進行檔案操作。

檢查hdfs是否健康

可以使用

fsck

檢查一下HDFS的健康度

fsck相關介紹:

    hadoop fsck

    Usage:DFSck

[-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]

    

<path>

檢查這個目錄中的檔案是否完整

    

-move

破損的檔案移至/lost+found目錄

    

-delete

删除破損的檔案

    

-openforwrite

列印正在打開寫操作的檔案

    

-files

列印正在check的檔案名

    

-blocks

列印block報告(需要和-files參數一起使用)

    

-locations

列印每個block的位置資訊(需要和-files參數一起使用)

    

-racks

列印位置資訊的網絡拓撲圖(需要和-files參數一起使用)

hadoop fsck /
           

用這個指令可以檢查整個檔案系統的健康狀況,但是要注意

它不會主動恢複

備份缺失的block,這個是由NameNode單獨的線程

異步處理

的.

繼續閱讀