| | 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) == |