wiki:Hinet110303/Demo1

Version 3 (modified by jazz, 14 years ago) (diff)

--

狀況一:名稱空間不一致(namespaceID mismatch)

  • [主因] 通常發生於不正確操作 NameNode,多次重新 format NameNode,導致 NameNode 與 DataNode 的 namespaceID 不一致。
  • [現象] 在 NameNode 管理介面(50070埠)看不到 Live Node。執行 jps 時看不到 DataNode 或者 DataNode 有跑,過一陣子就不見了。
  • [診斷] 觀察 ${hadoop.log.dir} 的 hadoop-${user.id}-datanode-${hostname}.log 應會出現錯誤訊息如下:
    2011-03-03 13:06:46,312 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: 
    java.io.IOException: Incompatible namespaceIDs in C:\var\hadoop\dfs\data: namenode 
    namespaceID = 773481889; datanode namespaceID = 174598545
    
  • [解法] 手動修改 ${hadoop.tmp.dir}/dfs/data/current/VERSION 逐一把每個 DataNode 的 namespaceID 改成跟新的 NameNode 一致,並逐一重新啟動 DataNode
    - namespaceID=174598545
    + namespaceID=773481889
    

在 hadoop4win 環境中模擬錯誤產生

  • 首先停掉目前正在運行中的 hadoop
    ~$ stop-hadoop
    
  • 接著確認切換至 hadoop 安裝目錄
    ~$ cd /opt/hadoop
    
  • 重新 format NameNode
    $ bin/hadoop namenode -format
    11/03/03 13:04:25 INFO namenode.NameNode: STARTUP_MSG:
    /************************************************************
    STARTUP_MSG: Starting NameNode
    STARTUP_MSG:   host = ${HOSTNAME}/${IP}
    STARTUP_MSG:   args = [-format]
    STARTUP_MSG:   version = 0.20.2
    STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/b
    ranch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
    ************************************************************/
    Re-format filesystem in \var\hadoop\dfs\name ? (Y or N) Y
    11/03/03 13:04:32 INFO namenode.FSNamesystem: fsOwner=chtti,None,root,Administra
    tors,Users,Debugger,Users
    11/03/03 13:04:32 INFO namenode.FSNamesystem: supergroup=supergroup
    11/03/03 13:04:32 INFO namenode.FSNamesystem: isPermissionEnabled=true
    11/03/03 13:04:32 INFO common.Storage: Image file of size 95 saved in 0 seconds.
    
    11/03/03 13:04:32 INFO common.Storage: Storage directory \var\hadoop\dfs\name ha
    s been successfully formatted.
    11/03/03 13:04:32 INFO namenode.NameNode: SHUTDOWN_MSG:
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at ${HOSTNAME}/${IP}
    ************************************************************/
    
  • 重新啟動 hadoop
    /opt/hadoop $ start-hadoop
    
  • 隔幾秒後,執行 jps 確認 DataNode 是否還活著
    $ jps
    5960 TaskTracker
    2836 SecondaryNameNode
    3400 JobTracker
    3252 NameNode
    5512 Jps
    
  • 觀察 DataNode 的錯誤訊息
    $ cygstart wordpad logs/hadoop-${USER}-datanode-${HOSTNAME}.log
    
  • 嘗試跟據解法,修復 DataNode 的 namespaceID。 - 修改 ${hadoop.tmp.dir}/dfs/data/current/VERSION 並使用以下指令重新啟動 datanode
    $ cygstart wordpad $(cygpath -w /cygdrive/c/var/hadoop/dfs/data/current/VERSION)
    $ /opt/hadoop/bin/hadoop-daemon.sh start datanode
    

狀況二:進入安全模式(safe mode)

狀況三:區塊遺失(missing blocks)