標籤:讀數 時間 hold 檔案的操作 datanode 檔案中 建立檔案 包括 成功
1. 安全模式概述
安全模式是HDFS所處的一種特殊狀態,在這種狀態下,檔案系統只接受讀資料請求,而不接受刪除、修改等變更請求,是一種保護機制,用於保證叢集中的資料區塊的安全性。
在NameNode主節點啟動時,HDFS首先進入安全模式,叢集會開始檢查資料區塊的完整性。DataNode在啟動的時候會向namenode彙報可用的block資訊,當整個系統達到安全標準時,HDFS自動離開安全模式。
假設我們設定的副本數(即參數dfs.replication)是5,那麼在Datanode上就應該有5個副本存在,假設只存在3個副本,那麼比例就是3/5=0.6。在設定檔hdfs-default.xml中定義了一個最小的副本的副本率(即參數dfs.namenode.safemode.threshold-pct)0.999。
我們的副本率0.6明顯小於0.99,因此系統會自動的複製副本到其他的DataNode,使得副本率不小於0.999.如果系統中有8個副本,超過我們設定的5個副本,那麼系統也會刪除多餘的3個副本。
如果HDFS處於安全模式下,不允許HDFS用戶端進行任何修改檔案的操作,包括上傳檔案,刪除檔案,重新命名,建立檔案夾,修改副本數等操作。
2. 安全模式配置
與安全模式相關主要配置在hdfs-site.xml檔案中,主要有下面幾個屬性:
dfs.namenode.replication.min: 每個資料區塊最小副本數量,預設為1. 在上傳檔案時,達到最小副本數,就認為上傳是成功的。
dfs.namenode.safemode.threshold-pct: 達到最小副本數的資料區塊的百分比。預設為0.999f。當小於這個比例,那就將系統切換成安全模式,對資料區塊進行複製;當大於該比例時,就離開安全模式,說明系統有足夠的資料區塊副本數,可以對外提供服務。小於等於0意味不進入安全模式,大於1意味一直處於安全模式。
dfs.namenode.safemode.min.datanodes: 離開安全模式的最小可用datanode數量要求,預設為0.也就是即使所有datanode都不可用,仍然可以離開安全模式。
dfs.namenode.safemode.extension: 當叢集可用block比例,可用datanode都達到要求之後,如果在extension配置的時間段之後依然能滿足要求,此時叢集才離開安全模式。單位為毫秒,預設為30000.也就是當滿足條件並且能夠維持30秒之後,離開安全模式。 這個配置主要是對叢集穩定程度做進一步的確認。避免達到要求後馬上又不符合安全標準。
總結一下,要離開安全模式,需要滿足以下條件:
1)達到副本數量要求的block比例滿足要求;
2)可用的datanode節點數滿足配置的數量要求;
3) 1、2 兩個條件滿足後維持的時間達到配置的要求
3. 安全模式命令
手動進入安全模式
hdfs dfsadmin -safemode enter
手動進入安全模式對於叢集維護或者升級的時候非常有用,因為這時候HDFS上的資料是唯讀。手動退出安全模式可以用下面命令:
hdfs dfsadmin -safemode leave
如果你想擷取到叢集是否處於安全模式,可以用下面的命令擷取:
hdfs dfsadmin -safemode get(也可在web頁面查看安全模式狀態)
HDFS安全模式