wiki:waue/2009/0401

Version 23 (modified by waue, 16 years ago) (diff)

--

Hadoop分佈式文件系統使用指南

  • 文件權限和授權。
  • 機架感知(Rack awareness):在調度任務和分配存儲空間時考慮節點的物理位置。
  • 安全模式:一種維護需要的管理模式。
  • fsck:一個診斷文件系統健康狀況的工具,能夠發現丟失的文件或數據塊。
  • Rebalancer:當datanode之間數據不均衡時,平衡集群上的數據負載。
  • 升級和回滾:在軟件更新後有異常發生的情形下,能夠回滾到HDFS升級之前的狀態。
  • Secondary Namenode:對文件系統名字空間執行週期性的檢查點,將Namenode上HDFS改動日誌文件的大小控制在某個特定的限度下。

DFSAdmin 命令

-report

報告HDFS的基本統計信息。有些信息也可以在NameNode Web服務首頁看到

$ bin/hadoop dfsadmin -report
  • 執行畫面
    Total raw bytes: 59529687040 (55.44 GB)
    Remaining raw bytes: 46887116647 (43.67 GB)
    Used raw bytes: 24576 (24 KB)
    % used: 0%
    Total effective bytes: 0 (0 KB)
    Effective replication multiplier: Infinity
    -------------------------------------------------
    Datanodes available: 1
    Name: 140.110.141.129:50010
    State          : In Service
    Total raw bytes: 59529687040 (55.44 GB)
    Remaining raw bytes: 46887116647(43.67 GB)
    Used raw bytes: 24576 (24 KB)
    % used: 0%
    Last contact: Wed Apr 01 14:49:39 CST 2009
    

-safemode

雖然通常並不需要,但是管理員的確可以手動讓!NameNode進入或離開安全模式。

$ bin/hadoop dfsadmin -safemode

Usage: java DFSAdmin [-safemode enter | leave | get | wait]

$ bin/hadoop dfsadmin -safemode enter
Safe mode is ON

$ bin/hadoop dfsadmin -safemode leave
Safe mode is OFF

安全模式的作用

  • !NameNode啟動時會從fsimage和edits日誌文件中裝載文件系統的狀態信息,接著它等待各個!DataNode向它報告它們各自的數據塊狀態,這樣,!NameNode就不會過早地開始複製數據塊,即使在副本充足的情況下。
  • 這個階段,!NameNode處於安全模式下。!NameNode的安全模式本質上是HDFS集群的一種只讀模式,此時集群不允許任何對文件系統或者數據塊修改的操作。通常!NameNode會在開始階段自動地退出安全模式。
  • 如果需要,你也可以通過'bin/hadoop dfsadmin -safemode'命令顯式地將HDFS置於安全模式。!NameNode首頁會顯示當前是否處於安全模式。關於安全模式的更多介紹和配置信息請參考JavaDoc:setSafeMode()。

-finalizeUpgrade

刪除上一次升級時製作的集群備份

Secondary NameNode

  • Secondary !NameNode定期合併fsimage和edits日誌,將edits日誌文件大小控制在一個限度下。因為內存需求和!NameNode在一個數量級上,所以通常secondary !NameNode和!NameNode運行在不同的機器上。
  • Secondary !NameNode由bin/start-dfs.sh在conf/masters中指定的節點上啟動
    • conf/masters的作用為:指定secondarynamenode,此檔內可寫入多個ip,則有多個第二名稱節點。(已由ip被寫入此檔的節點都會有第二名稱節點日誌而得到驗證)
$ bin/hadoop-daemon.sh --config ./conf start secondarynamenode

starting secondarynamenode, logging to /tmp/hadoop/logs/hadoop-waue-secondarynamenode-Dx7200.out

動態加入datanode 與 tasktracker

  • 是否能連到正確的namenode取決於conf/hadoop-site.xml,目前測試結果與conf/slave、masters無關
$ bin/hadoop-daemon.sh --config ./conf start datanode

starting datanode, logging to /tmp/hadoop/logs/hadoop-waue-datanode-Dx7200.out
$ bin/hadoop-daemon.sh --config ./conf start tasktracker

starting tasktracker, logging to /tmp/hadoop/logs/hadoop-waue-tasktracker-Dx7200.out

balancer

用於分析數據塊分佈和重新平衡DataNode上的數據分佈

$ bin/hadoop balancer

Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved
09/04/01 18:00:08 INFO net.NetworkTopology: Adding a new node: /default-rack/140.110.138.191:50010
09/04/01 18:00:08 INFO net.NetworkTopology: Adding a new node: /default-rack/140.110.141.129:50010
09/04/01 18:00:08 INFO dfs.Balancer: 0 over utilized nodes:
09/04/01 18:00:08 INFO dfs.Balancer: 0 under utilized nodes: 
The cluster is balanced. Exiting...
Balancing took 186.0 milliseconds

機架感知(Rack awareness)

據說是設定某個參數 dfs.network.script ,旦目前為止還是不知道這個參數在哪

References