一、參數含義
dfs.replication:設置數據塊應該被復制的份數;
dfs.replication.min:所規定的數據塊副本的最小份數;
dfs.replication.max:所規定的數據塊副本的最大份數;
dfs.safemode.threshold.pct:指定應有多少比例的數據塊滿足最小副本數要求。
(1)當小於這個比例, 那就將系統切換成安全模式,對數據塊進行復制;
(2)當大於該比例時,就離開安全模式,說明系統有足夠的數據塊副本數,可以對外提供服務。
(3)小於等於0意味不進入安全模式,大於1意味一直處於安全模式。
二、dfs.replication.min存在的意義
副本數按dfs.replication設置,如果有失效節點導致某數據塊副本數降低,當低於dfs.replication.min后,系統再在其他節點處復制新的副本。如果該數據塊的副本經常丟失,導致在環境中太多的節點處復制了超過dfs.replication.max的副本數,那么就不再復制了。
三、Hadoop安全模式的理解
hadoop的安全模式即只讀模式,是指當前系統中數據塊的副本數比較少,在該階段要對數據塊進行復制操作,不允外界對數據塊進行修改和刪除等操作。NameNode在啟動的時候首先進入安全模式,如果datanode丟失的block達到一定的比例(1-dfs.safemode.threshold.pct),則系統會一直處於安全模式狀態即只讀狀態。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS啟動的時候,如果DataNode上報的block個數達到了元數據記錄的block個數的0.999倍才可以離開安全模式,否則一直是這種只讀模式。如果設為1則HDFS永遠是處於SafeMode。