安全模式是hadoop的一種保護機制,用於保證集群中的數據塊的安全性。
當集群啟動的時候,會首先進入安全模式。當系統處於安全模式時會檢查數據塊的完整性。假設我們設置的副本數(即參數dfs.replication)是5,那么在datanode上就應該有5個副本存在,假設只存在3個副本,那么比例就是3/5=0.6。在配置文件hdfs-default.xml中定義了一個最小的副本的副本率0.999,如圖

我們的副本率0.6明顯小於0.99,因此系統會自動的復制副本到其他的dataNode,使得副本率不小於0.999.如果系統中有8個副本,超過我們設定的5個副本,那么系統也會刪除多余的3個副本。
安全模式對我們有什么影響呢?
這時,不允許客戶端進行任何修改文件的操作,包括上傳文件,刪除文件,重命名,創建文件夾等操作。比如創建文件時,在源代碼中就有對安全模式的判斷,如圖所示

當我們在安全模式下進行修改文件操作時,會報如下錯誤,如圖

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

雖然不能進行修改文件的操作,但是可以瀏覽目錄結構、查看文件內容的。
在命令行下是可以控制安全模式的進入、退出和查看的。
命令 hadoop fs -safemode get 查看安全模式狀態
命令 hadoop fs -safemode enter 進入安全模式狀態
命令 hadoop fs -safemode leave 離開安全模式
操作如圖所示

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