什麼是安全模式:
安全模式是HDFS所處的一種特殊狀態,在這種狀態下,文件系統只接受讀數據請求,而不接受刪除、修改等變更請求。
安全模式下hdfs做了什麼事:
1、NameNode啟動後會進入一個稱為安全模式的特殊狀態。處於安全模式的NameNode是不會進行數據塊的複製的。
2、NameNode從所有的DataNode接收心跳信號和塊狀態報告。塊狀態報告包括了某個NameNode所有的數據塊列表。每個數據塊都有一個指定的最小副本數。當NameNode檢測確認某個數據塊的副本數目達到這個最小值,那麼該數據塊就會被認為是副本安全 (safely replicated) 的;
3、在一定百分比(這個參數可配置)的數據塊被 NameNode檢測確認是安全之後(加上一個額外的30秒等待時間), NameNode將退出安全模式狀態。
4、接下來它會確定還有哪些數據塊的副本沒有達到指定數目,並將這些數據塊複製到其他NameNode上。
怎麼離開安全模式:
方法一、暴力的直接將整個文件系統格式化:hdfs namenode -format
方法二、將其控制安全模式的閥值調小:dfs.safemode.threshold.pct(將其該值調整整)
方法三、使用命令強制離開安全模式然後再檢測損壞block並刪除:
1.hdfs dfsadmin -safemode leave (強制離開安全模式)
2.hdfs fsck / -delete (刪除掉損壞的blocks)
如果想修復,可以使用linux的/sbin/fsck修復工具。
閱讀更多 好程序員 的文章