hadoop datanode启动失败
問題導讀:
1、Hadoop出現問題時,該如何入手查看問題?
2、datanode無法啟動,我們該怎么解決?
3、如何動態加入DataNode或TaskTracker?
一、問題描述
當我多次格式化文件系統時,如
?
復制代碼
會出現datanode無法啟動,查看日志,發現錯誤為:
?
2012-04-20 20:39:46,501 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/gqy/hadoop/data: namenode namespaceID = 155319143; datanode namespaceID = 1036135033?
?
?
二、問題產生原因
當我們執行文件系統格式化時,會在namenode數據文件夾(即配置文件中dfs.name.dir在本地系統的路徑)中保存一個current/VERSION文件,記錄namespaceID,標識了所格式化的 namenode的版本。如果我們頻繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系統的路徑)的current/VERSION文件只是你第一次格式化時保存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。
三、解決辦法
把配置文件中dfs.data.dir在本地系統的路徑下的current/VERSION中的namespaceID改為與namenode一樣。
如果大家在安裝的時候遇到問題,或者按步驟安裝完后卻不能運行Hadoop,那么建議仔細查看日志信息,Hadoop記錄了詳盡的日志信息,日志文件保存在logs文件夾內。
無論是啟動,還是以后會經常用到的MapReduce中的每一個job,以及HDFS等相關信息,Hadoop均存有日志文件以供分析。
例如:
NameNode和DataNode的namespaceID不一致,這個錯誤是很多人在安裝時會遇到的,日志信息為:
?
若HDFS一直沒有啟動,讀者可以查詢日志,并通過日志進行分析,以上提示信息顯示了NameNode和DataNode的namespaceID不一致。
這個問題一般是由于兩次或兩次以上的格式化NameNode造成的,有兩種方法可以解決,第一種方法是刪除DataNode的所有資料(及將集群中每個datanode的/hdfs/data/current中的VERSION刪掉,然后執行hadoop namenode -format重啟集群,錯誤消失。<推薦>);第二種方法是修改每個DataNode的namespaceID(位于/hdfs/data/current/VERSION文件中)<優先>或修改NameNode的namespaceID(位于/hdfs/name/current/VERSION文件中),使其一致。
下面這兩種方法在實際應用中也可能會用到。
1)重啟壞掉的DataNode或JobTracker。當Hadoop集群的某單個節點出現問題時,一般不必重啟整個系統,只須重啟這個節點,它會自動連入整個集群。
在壞死的節點上輸入如下命令即可:
2) 動態加入DataNode或TaskTracker。這個命令允許用戶動態將某個節點加入集群中。
?
?
總結
以上是生活随笔為你收集整理的hadoop datanode启动失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GPRS模块AT呼叫控制命令
- 下一篇: 外经证预缴税款,计算公式有以下两个