Hadoop安全模式和機架感知

ThankCAT發表於2023-03-07

安全模式

叢集啟動時的一個狀態

  • 安全模式是HDFS的一種工作狀態,處於安全模式的狀態下,只向客戶端提供檔案的只讀檢視,不接受對名稱空間的修改;同時NameNode節點也不會進行資料塊的複製或者刪除

NameNode啟動時

  1. 首先將映象檔案(fsimage)載入記憶體,並執行編輯日誌(edits)中的各項操作。

  2. 一旦在記憶體中成功建立檔案系統後設資料的映像,則建立一個新的fsimage檔案和一個空的編輯日誌。

  3. NameNode開始監聽RPC和Http請求。

  4. 此時NameNode處於安全模式,只接受客戶端的讀請求。

系統中的資料塊的位置並不是由NameNode維護的,而是以塊列表的形式儲存在DataNode中。

安全模式下

  1. 安全模式下,各個DataNode會向NameNode傳送自身的資料塊列表當NameNode有足夠的資料塊資訊後,便在30秒後退出安全模式
  2. NameNode發現資料節點過少會啟動資料塊複製過程

如果NN收集的Block資訊沒有達到最少副本數,就會將缺失的副本,從有的DN上複製到其他DN

  1. dfs.replication.min=2

  2. 但是預設最低副本數為1

  3. 在複製的過程中系統還是處於安全模式

安全模式相關命令

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個節點

  • 與前面節點不重複的其他節點

相關文章