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>

<br/>node

參考資料:安全

相關文章
相關標籤/搜索