NameNode 和 SecondaryNameNode


1. NN 和 2NN 工作機制

  • NameNode 會產生在磁盤中備份元數據的FsImage;
  • 每當元數據有更新或者添加數據時,修改內存中的元數據並追加到Edits中;
  • SecondaryNameNode 專門用於合並 FsImage 和 Edits;

2. Fsimage 和 Edits 解析

  • 查看Fsimage: hdfs oiv -p XML -i fsimage_0000000000000000105 -o fsimage.xml
    • hdfs oiv -p 需要轉換生成的文件類型 -i 鏡像文件 -o 轉換后文件輸出路徑
  • 查看Edits: hdfs oev -p XML -i edits_000000000000000104-000000000000000105 -o edits.xml

3. CheckPoint 時間設置

  • 通常情況下, SecondaryNameNode 每隔一小時執行一次;
  • 另一種情況:一分鍾檢查一次操作次數,當操作次數達到一百萬時, SecondaryNameNode 執行一次;
// hdfs-default.xml
<property>
    <name>dfs.namenode.checkpoint.period</name>
    <value>3600</value>
</property>

<property>
    <name>dfs.namenode.checkpoint.txns</name>
    <value>1000000</value>
    <description>操作次數</description>
</property>
<property>
    <name>dfs.namenode.checkpoint.check.period</name>
    <value>60</value>
    <description>一分鍾檢查一次操作次數</description>
</property>

4. NameNode 故障處理

  • NameNode 發生故障后,可以采用兩種方法恢復數據
    • 將 SecondaryNameNode 中數據拷貝到 NameNode 存儲數據的目錄;
    • 使用 -importCheckpoint 選項啟動 NameNode 守護進程, 從而將 SecondaryNameNode 中數據拷貝到 NameNode 目錄中;
      • 如果 SecondaryNameNode 和 NameNode 不在一個主機節點上,需要將 SecondaryNameNode 存儲數據的目錄拷貝到 NameNode 存儲數據的評級目錄,並刪除 in_user.lock 文件;
      • bin/hdfs namenode -importCheckpoint
      • 啟動 NameNode: sbin/hadoop-daemon.sh start namenode
// 第二種方式,需要修改 hdfs-site.xml 配置文件
<property>
    <name>dfs.namenode.checkpoint.period</name>
    <value>120</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>NameNode中存放地址/tmp/dfs/name</value>
</property>

5. 集群的安全模式

5.1 NameNode 啟動

  • NameNode 啟動時, 首先將鏡像文件(Fsimage)載入內存,並執行編輯日志(Edits)中的各項操作。一旦在內存中成功建立文件系統元數據的映像,則創建一個新的 Fsimage 文件和一個空的編輯日志。此時,NameNode 開始監聽 DataNode 請求。這個過程期間,NameNode 一直運行在安全模式,即 NameNode 的文件系統對於客戶端來說是只讀的。

5.2 DataNode 啟動

  • 系統中的數據塊的位置並不是有 NameNode 維護的, 而是以塊列表的形式存儲在 DataNode 中。在系統的正常操作期間, NameNode 會在內存中保留所有塊位置的映射信息。在安全模式下, 各個 DataNode 會向 NameNode 發送最新的塊列表信息, NameNode 了解到足夠多的塊位置信息之后, 即可高效運行文件系統。

5.3 安全模式退出判斷

  • 如果滿足"最小副本條件", NameNode 會在30秒鍾之后就退出安全模式。所謂的最小副本條件指的是在整個文件系統中99.9%的塊滿足最小副本級別(默認值: dfs.replication.min=1)。在啟動一個剛剛格式化的 HDFS 集群時,因為系統中還沒有任何塊,所以 NameNode 不會進入安全模式。

5.4 安全模式基本語法

  • 查看安全模式狀態:hdfs dfsadmin -safemode get
  • 進入安全模式狀態:hdfs dfsadmin -safemode enter
  • 離開安全模式狀態:hdfs dfsadmin -safemode leave
  • 等待安全模式離開:hdfs dfsadmin -safemode wait

6. NameNode多目錄

  • NameNode 在本地目錄可以配置成多個, 且每個目錄存放內容相同,增加了可靠性;
// hdfs-site.xml 配置
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///${hadoop.tmp.dir}/dfs/name1, file:///${hadoop.tmp.dir}/dfs/name2</value>
</property>

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM