1. 程式人生 > >datanode或者namenode無法啟動

datanode或者namenode無法啟動

問題描述

起初問題是datanode無法啟動,檢視datanode中/home/zkpk/Software/hadoop-2.4.0/logs的datanode日誌發現問題是cluster ID不一致導致的。
這裡寫圖片描述

網上的解決方法有修改datanode的clusterID與namenode的clusterID一致或者直接刪除datanode的VERSION兩種方法。

由於沒搞清楚幾個VERSION的區別,隨便找到一個刪了就覺得可以了,在slave節點的hadoopdata/dfs/name/current下面沒有找到VERSION,但是在master節點的hadoopdata/dfs/name/current下面找到了VERSION,於是刪除之,重新格式化namenode並重啟叢集,結果slave節點中的datanode出現了,但是master節點中的namenode沒了。

檢視master中/home/zkpk/Software/hadoop-2.4.0/logs的namenode日誌,
這裡寫圖片描述

然而在啟動之前明明格式化了那namenode,所以是怎麼回事呢?

現在datanode啟動成功說明不存在ID不一致的問題了,那麼namenode無法啟動會不會是因為刪錯了東西。
經過調查發現果然如此,應該刪除的是datanode的/home/zkpk/hadoopdata/dfs/data/current目錄下的VERSION,因為開始在圖形介面開啟該目錄無法顯示,所以沒有找到該VERSION。應該在root許可權下進入該目錄刪除VERSION。

原因很簡單,叢集啟動namenode需要從master的/home/zkpk/hadoopdata/dfs/name/current中找到VERSION獲取叢集ID,若刪除該檔案則找不到clusterID所以無法啟動namenode,而且因為沒有了namenode的clusterID,因此datanode啟動時不存在datanodeID和namenodeID不匹配的問題,因此datanode成功啟動。
總結:應該刪除的slave節點的/home/zkpk/hadoopdata/dfs/data/current下的VERSION,不能刪除master節點的/home/zkpk/hadoopdata/dfs/name/current下的VERSION。