2014年2月12日 星期三

hadoop 問題排除-storge_id error


這問題還蠻常見的~
在某些啟動失敗, 或結束(shutdown)失敗~
(可能是設定有誤或網路不通...之類造成的後遺症)

我覺得主因是pid不一致, hadoop的pid都是在特定地方寫一個檔案做判別~
但是有可能pid檔寫了~ 但程序其實沒跑起來(若之前的process沒kill乾淨就會)
要shutdown時~ 去找pid檔~ 殺也殺不掉~ 就會發生一些有的沒的問題....
(有點像問題會自己生孩子XD|||...但是又找不到這孩子從那裡來的...所以...)

解問題~ 就是看log檔...如果有看到storge_id error
解法就是~ 去看tmpdir, 和datadir下的pid, 然後手動改檔案讓他對起來就解了
至於改那個檔~ 我記得log上寫的很清楚XD~ 它有說它應該要讀到的ID是xxxx, 但是那裡是oooo...所以不符合~

實務上就是hadoop log+ datadir/current/VERSION
怕改錯整個GG~ 就是...先把原始檔備份起來~XD|||
基本上改好後~ 重起~ 再RUN~ 沒錯就不會有錯了~

當然最低級的解法就是重新format, 但是有很大風險跟後續處理~
當然要看系統內的檔案有沒有用...
(偶之前有做過只用"分散式運算"的專案~完全沒存資料的~就可以直接format...XD)

###storge_id error, cat/vim ID from log
   /home/OOOOO/datadir: namenode namespaceID = 1281580305; datanode namespaceID = 1985552196
   cat /home/OOOOO/datadir/current/VERSION
namespaceID=1985552196
storageID=DS-17766262-192.168.3.185-50010-1383819150104
cTime=0
storageType=DATA_NODE
layoutVersion=-41
    vim /home/OOOOO/datadir/current/VERSION
update namespaceID --> 1281580305
    bin/hadoop-daemon.sh --config ./conf start datanode
    bin/hadoop-daemon.sh --config ./conf start jobtracker
---> OK   

沒有留言: