Hadoop(03) 启动HDFS异常

来源:互联网 发布:狼人杀 官方唯一 知乎 编辑:程序博客网 时间:2024/06/05 14:32

1 . NameNode启动报错

java.io.IOException: There appears to be a gap in the edit log.  We expected txid 1, but got txid 32.
原因:namenode元数据被破坏,需要修复解决:执行 hadoop namenode -recover 恢复namenode一路选择c,一般就OK了

2 . DataNode未启动

原因:java.io.IOException: Incompatible clusterIDs in /home/software/hadoop/hadoop-2.7.3/tmp/dfs/data: namenode clusterID = CID-b30773e5-026a-4421-ad8b-701b772761b6; datanode clusterID = CID-97bd0a29-da9d-442c-9c04-905f47e9dd0a        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)        at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)        at java.lang.Thread.run(Thread.java:745)2016-09-15 19:23:03,124 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to Huaqing/192.168.1.100:9000. Exiting. java.io.IOException: All specified directories are failed to load.        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:574)        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)        at java.lang.Thread.run(Thread.java:745)
解决:从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配。打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
0 0
原创粉丝点击