hadoop為了防止數據丟失,啟動了“安全模式”的設置,每次啟動hadoop后一段時間內集群處於安全模式,該模式下集群會檢查各節點文件塊的記錄,如果數據塊中滿足replication設置值的數據塊的數量在總數據塊數量中所占比例沒有超過一定值(稱為安全模式閥值,默認為0.999f),那么集群將持續處於安全模式,在該模式下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式主要是為了系統啟動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的復制或者刪除部分數據塊。運行期通過命令也可以進入 安全模式。在實踐過程中,系統啟動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。
但是如果是在小型測試集群,往往因為結點數量較少,很可能導致集群一直處於安全模式無法自動退出,這種情況下我們可以通過兩種方式進行設置:
1.
1. 在HDFS配置文件中修改安全模式閥值(永久不進行安全檢查,但不推薦)
在hdfs-site.xml中設置安全閥值屬性,屬性值默認為0.999f,如果設為1則不進行安全檢查
<property> <name>dfs.safemode.threshold.pct</name> <value>0.999f</value> <description> Specifies the percentage of blocks that should satisfy the minimal replication requirement defined by dfs.replication.min. Values less than or equal to 0 mean not to wait for any particular percentage of blocks before exiting safemode. Values greater than 1 will make safe mode permanent. </description> </property>
因為是在配置文件中進行硬修改,不利於管理員操作和修改,因此不推薦此方式
2. 直接在bash輸入指令脫離安全模式(本次登錄退出安全模式,推薦)
在安全模式下輸入指令:
hadoop dfsadmin -safemode leave
即可退出安全模式。