安全模式
叢集啟動時的一個狀態
- 安全模式是HDFS的一種工作狀態,處於安全模式的狀態下,只向客戶端提供檔案的只讀檢視,不接受對名稱空間的修改;同時NameNode節點也不會進行資料塊的複製或者刪除
NameNode啟動時
-
首先將映象檔案(fsimage)載入記憶體,並執行編輯日誌(edits)中的各項操作。
-
一旦在記憶體中成功建立檔案系統後設資料的映像,則建立一個新的fsimage檔案和一個空的編輯日誌。
-
NameNode開始監聽RPC和Http請求。
-
此時NameNode處於安全模式,只接受客戶端的讀請求。
系統中的資料塊的位置並不是由NameNode維護的,而是以塊列表的形式儲存在DataNode中。
安全模式下
- 安全模式下,各個DataNode會向NameNode傳送自身的資料塊列表當NameNode有足夠的資料塊資訊後,便在30秒後退出安全模式
- NameNode發現資料節點過少會啟動資料塊複製過程
如果NN收集的Block資訊沒有達到最少副本數,就會將缺失的副本,從有的DN上複製到其他DN
-
dfs.replication.min=2
-
但是預設最低副本數為1
-
在複製的過程中系統還是處於安全模式
安全模式相關命令
hdfs dfsadmin -safemode leave 強制NameNode退出安全模式
hdfs dfsadmin -safemode enter 進入安全模式
hdfs dfsadmin -safemode get 檢視安全模式狀態
hdfs dfsadmin -safemode wait 等待一直到安全模式結束
HDFS的許可權
HDFS對許可權的控制
-
只能防止好人做錯事
-
不能防止壞人做壞事
你告訴他你是誰,他就認為你是誰!(天真無邪的Hadoop)
機架感知策略
節點距離
distance(/D1/R1/H1,/D1/R1/H1)=0 相同的datanode
distance(/D1/R1/H1,/D1/R1/H3)=2 同一rack下的不同datanode
distance(/D1/R1/H1,/D1/R2/H4)=4 同一IDC下的不同datanode
distance(/D1/R1/H1,/D2/R3/H7)=6 不同IDC下的datanode
機架感知
機架感知(rack awareness)是為了保證副本在叢集的安全性
我們需要將副本放在不同的DN節點上,節點也需要一定的考量
- 可靠性、可用性、頻寬消耗
第一個節點
-
叢集內部(優先考慮和客戶端相同節點作為第一個節點)
-
叢集外部(選擇資源豐富且不繁忙的節點為第一個節點)
第二個節點
- 選擇和第一個節點不同機架的其他節點
第三個節點
- 與第二個節點相同機架的其他節點
第N個節點
- 與前面節點不重複的其他節點