HDFS 安全模式

HDFS 安全模式

安全模式概述

安全模式是 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 客戶端進行任何修改文件的操作,包括上傳文件,刪除文件,重命名,創建文件夾,修改副本數等操作。

安全模式配置

與安全模式相關主要配置在 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 兩個條件滿足後維持的時間達到配置的要求

安全模式命令

手動進入安全模式: hdfs dfsadmin -safemode enter
手動進入安全模式對於集羣維護或者升級的時候非常有用,因爲這時候 HDFS 上的數據是隻讀的。手動退出安全模式可以用下面命令:
hdfs dfsadmin -safemode leave
如果你想獲取到集羣是否處於安全模式,可以用下面的命令獲取:
hdfs dfsadmin -safemode get(也可在 web 頁面查看安全模式狀態)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章