[[PageOutline]] = 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 == * http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_(Multi-Node_Cluster) * http://cn.hadoop.org/doc/hdfs_user_guide.html