天天看點

linux節點啟動不成功,Hadoop 啟動節點Datanode失敗解決

當我動态添加一個Hadoop從節點的之後,出現了一個問題:

[[email protected] current]#hadoop-daemon.sh start datanode

starting datanode, logging to /usr/local/hadoop1.1/libexec/../logs/hadoop-root-datanode-hadoop.out

[[email protected] ~]# jps

jps指令發現沒有datanode啟動,是以去它提示的路徑下檢視了hadoop-root-datanode-hadoop.out檔案,可以是空白的。

後來在該路徑下發現了/usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log檔案

檢視日志檔案

[[email protected] current]#vim /usr/local/hadoop1.1/logs/hadoop-root-datanode-hadoop.log

STARTUP_MSG:  version = 1.1.2

STARTUP_MSG:  build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by 'hortonfo' on Thu Jan 31 02:03:24 UTC 2013

************************************************************/

2014-10-31 19:24:28,543 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties

2014-10-31 19:24:28,565 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.

2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).

2014-10-31 19:24:28,566 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started

2014-10-31 19:24:28,728 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.

2014-10-31 19:24:29,221 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:IncompatiblenamespaceIDs in /usr/local/hadoop/tmp/dfs/data:namenode namespaceID = 942590743; datanode namespaceID = 463031076

at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)

at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)

at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:399)

at org.apache.hadoop.hdfs.server.datanode.DataNode.(DataNode.java:309)

at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)

at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)

at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)

at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)

at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)

2014-10-31 19:24:29,229 INFO org.apache.hadoop.hdfs.server.datanode.DataNode:SHUTDOWN_MSG:

讀日志檔案:

先看到ERROT資訊中Incompatible這個單詞,意思是“不相容的”。是以我們可以看出是datanode的namespaceID出錯了。

是以最後shutDown了。

解決思路:

(1)先去hadoop路徑下的配置檔案hdfs-site.xml,看看:

[[email protected] current]#vim /usr/local/hadoop1.1/conf/hdfs-site.xml

.....................................................................................................................................

dfs.replication

1

dfs.permissions

false

dfs.name.dir

${hadoop.tmp.dir}/dfs/name

this is a comma-delimited list of directories

then the name table is replicated in all of the directories,

for redunancy.

.....................................................................................................................................

裡面并沒有有關datanode的配置資訊,如果你有類似于下面的内容:

dfs.data.dir

/data/hdfs/data

說明你的datanode配置檔案不再預設路徑,而是你自己設定過的路徑下。

(2)進入datanode的dfs.data.dir的 current目錄,修改裡面的檔案VERSION

由于我是預設的,是以路徑是/usr/local/hadoop/tmp/dfs/data/current/VERSION。

這個版本不同,可能路徑也不同,最好自己去找找。

[[email protected] current]#vim /usr/local/hadoop/tmp/dfs/data/current/VERSION

.....................................................................................................................................

#Thu Oct 30 04:52:01 PDT 2014

namespaceID=463031076

storageID=DS-1787154912-192.168.0.100-50010-1413940826285

cTime=0

storageType=DATA_NODE

layoutVersion=-32

.....................................................................................................................................

看裡面的namespaceID=463031076,可以發現,跟hadoop-root-datanode-hadoop.log中的datanode namespaceID = 463031076的一樣,這說明他是讀取這個檔案的,是以我們沒有找錯。

(3)修改這個版本資訊檔案VERSION

ID與hadoop-root-datanode-hadoop.log中 namenode namespaceID = 942590743一緻

ps:我想大家應該可以想到namenode namespaceID是從哪裡來的:

[[email protected] current]#vim /usr/local/hadoop/tmp/dfs/name/current/VERSION

.....................................................................................................................................

#Fri Oct 31 19:23:44 PDT 2014

namespaceID=942590743

cTime=0

storageType=NAME_NODE

layoutVersion=-32

.....................................................................................................................................

這裡的ID是不是與hadoop-root-datanode-hadoop.log中 namenode namespaceID = 942590743一緻?

(4)修改完以後,重新運作datanode

[[email protected] current]# hadoop-daemon.sh start datanode

[[email protected] current]# jps

8581 DataNode

看到DataNode,說明已經跑起來了。

linux節點啟動不成功,Hadoop 啟動節點Datanode失敗解決