|   | 1 | [[PageOutline]] | 
                  
                          |   | 2 |  | 
                  
                          |   | 3 | == 狀況一:名稱空間不一致(namespaceID mismatch) == | 
                  
                          |   | 4 |  | 
                  
                          |   | 5 |  * [主因] 通常發生於不正確操作 !NameNode,多次重新 format !NameNode,導致 !NameNode 與 !DataNode 的 namespaceID 不一致。 | 
                  
                          |   | 6 |  * [現象] 在 NameNode 管理介面(50070埠)看不到 Live Node。執行 jps 時看不到 !DataNode 或者 !DataNode 有跑,過一陣子就不見了。 | 
                  
                          |   | 7 |  * [診斷] 觀察 ${hadoop.log.dir} 的 hadoop-${user.id}-datanode-${hostname}.log 應會出現錯誤訊息如下: | 
                  
                          |   | 8 | {{{ | 
                  
                          |   | 9 | #!text | 
                  
                          |   | 10 | 2011-03-03 13:06:46,312 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:  | 
                  
                          |   | 11 | java.io.IOException: Incompatible namespaceIDs in C:\var\hadoop\dfs\data: namenode  | 
                  
                          |   | 12 | namespaceID = 773481889; datanode namespaceID = 174598545 | 
                  
                          |   | 13 | }}} | 
                  
                          |   | 14 |  * [解法] (1) 手動修改 ${hadoop.tmp.dir}/dfs/name/current/VERSION 改成跟現存 !DataNode 的namespaceID 一致,並重新啟動 !NameNode | 
                  
                          |   | 15 |  * [解法] (2) 手動修改 ${hadoop.tmp.dir}/dfs/data/current/VERSION 逐一把每個 !DataNode 的 namespaceID 改成跟新的 !NameNode 一致,並逐一重新啟動 !DataNode | 
                  
                          |   | 16 | {{{ | 
                  
                          |   | 17 | #!diff | 
                  
                          |   | 18 | - namespaceID=773481889 | 
                  
                          |   | 19 | + namespaceID=174598545 | 
                  
                          |   | 20 | }}} | 
                  
                          |   | 21 |  | 
                  
                          |   | 22 | === 在 hadoop4win 環境中模擬錯誤產生 === | 
                  
                          |   | 23 |  | 
                  
                          |   | 24 |  * 首先停掉目前正在運行中的 hadoop  | 
                  
                          |   | 25 | {{{ | 
                  
                          |   | 26 | ~$ stop-hadoop | 
                  
                          |   | 27 | }}} | 
                  
                          |   | 28 |  * 接著確認切換至 hadoop 安裝目錄 | 
                  
                          |   | 29 | {{{ | 
                  
                          |   | 30 | ~$ cd /opt/hadoop | 
                  
                          |   | 31 | }}} | 
                  
                          |   | 32 |  * 重新 format !NameNode | 
                  
                          |   | 33 | {{{ | 
                  
                          |   | 34 | $ bin/hadoop namenode -format | 
                  
                          |   | 35 | 11/03/03 13:04:25 INFO namenode.NameNode: STARTUP_MSG: | 
                  
                          |   | 36 | /************************************************************ | 
                  
                          |   | 37 | STARTUP_MSG: Starting NameNode | 
                  
                          |   | 38 | STARTUP_MSG:   host = ${HOSTNAME}/${IP} | 
                  
                          |   | 39 | STARTUP_MSG:   args = [-format] | 
                  
                          |   | 40 | STARTUP_MSG:   version = 0.20.2 | 
                  
                          |   | 41 | STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/b | 
                  
                          |   | 42 | ranch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010 | 
                  
                          |   | 43 | ************************************************************/ | 
                  
                          |   | 44 | Re-format filesystem in \var\hadoop\dfs\name ? (Y or N) Y | 
                  
                          |   | 45 | 11/03/03 13:04:32 INFO namenode.FSNamesystem: fsOwner=chtti,None,root,Administra | 
                  
                          |   | 46 | tors,Users,Debugger,Users | 
                  
                          |   | 47 | 11/03/03 13:04:32 INFO namenode.FSNamesystem: supergroup=supergroup | 
                  
                          |   | 48 | 11/03/03 13:04:32 INFO namenode.FSNamesystem: isPermissionEnabled=true | 
                  
                          |   | 49 | 11/03/03 13:04:32 INFO common.Storage: Image file of size 95 saved in 0 seconds. | 
                  
                          |   | 50 |  | 
                  
                          |   | 51 | 11/03/03 13:04:32 INFO common.Storage: Storage directory \var\hadoop\dfs\name ha | 
                  
                          |   | 52 | s been successfully formatted. | 
                  
                          |   | 53 | 11/03/03 13:04:32 INFO namenode.NameNode: SHUTDOWN_MSG: | 
                  
                          |   | 54 | /************************************************************ | 
                  
                          |   | 55 | SHUTDOWN_MSG: Shutting down NameNode at ${HOSTNAME}/${IP} | 
                  
                          |   | 56 | ************************************************************/ | 
                  
                          |   | 57 | }}} | 
                  
                          |   | 58 |  * 重新啟動 hadoop | 
                  
                          |   | 59 | {{{ | 
                  
                          |   | 60 | /opt/hadoop $ start-hadoop | 
                  
                          |   | 61 | }}} | 
                  
                          |   | 62 |  * 隔幾秒後,執行 jps 確認 !DataNode 是否還活著 | 
                  
                          |   | 63 | {{{ | 
                  
                          |   | 64 | $ jps | 
                  
                          |   | 65 | 5960 TaskTracker | 
                  
                          |   | 66 | 2836 SecondaryNameNode | 
                  
                          |   | 67 | 3400 JobTracker | 
                  
                          |   | 68 | 3252 NameNode | 
                  
                          |   | 69 | 5512 Jps | 
                  
                          |   | 70 | }}} | 
                  
                          |   | 71 |  * 觀察 !DataNode 的錯誤訊息 | 
                  
                          |   | 72 | {{{ | 
                  
                          |   | 73 | $ cygstart wordpad logs/hadoop-${USER}-datanode-${HOSTNAME}.log | 
                  
                          |   | 74 | }}} | 
                  
                          |   | 75 |  * 嘗試跟據解法(1),修復 !NameNode 的 namespaceID。 - 修改 ${hadoop.tmp.dir}/dfs/name/current/VERSION 並使用以下指令重新啟動 namenode 與 datanode | 
                  
                          |   | 76 | {{{ | 
                  
                          |   | 77 | $ /opt/hadoop/bin/hadoop-daemon.sh stop namenode | 
                  
                          |   | 78 | $ /opt/hadoop/bin/hadoop-daemon.sh start namenode | 
                  
                          |   | 79 | $ /opt/hadoop/bin/hadoop-daemon.sh start datanode | 
                  
                          |   | 80 | }}} | 
                  
                          |   | 81 |  | 
                  
                          |   | 82 | == 狀況二:進入安全模式(safe mode) == | 
                  
                          |   | 83 | == 狀況三:區塊遺失(missing blocks)  == |