一个namenode能正常启动,状态为active,另一个namenode无法启动

    简介:我在搭建hadoop2.5.1的HDFS(HA With QJM)时遇到了上述问题。在此先强调一点:我之前做过HA,现在要重做。

    问题:格式化namenode(起个别名,就叫甲吧)后,用hdfs namenode -bootstrapStandby的方式把格式化产生的元数据copy到另外一个namenode(乙)上。用start-dfs.sh的方式启动hdfs后,发现甲正常启动,乙始终没用启动。难道是配置文件中的配置有问题?于是按照hadoop官网、技术员的博客多次进行配置,还是无法启动乙。嗯!现在可以肯定上述猜想不对!咋办呐?看看日志吧!看能不能查出原因?打开日志后,发现有报错:“Storage directory /opt/hadoop/dfs/name does not exist”,(“/opt/hadoop”是我的hadoop.tmp.dir的存放路径,在core-site.xml中配置的),详细信息如下:

2016-04-28 18:20:22,791 WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /opt/hadoop/dfs/name does not exist
2016-04-28 18:20:22,792 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: <span style="color:#ff0000;">Directory /opt/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible</span>.
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:311)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
2016-04-28 18:20:22,798 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@lida2:50070
2016-04-28 18:20:22,798 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2016-04-28 18:20:22,799 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2016-04-28 18:20:22,799 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2016-04-28 18:20:22,799 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /opt/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:311)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
.....

介尼玛什么情况?会不会是元数据没有copy到乙上来?于是进入/opt/hadoop/dfs/name/current/下查看,果然没有元数据!找到原因了,解决问题吧!

    出现原因:甲上的元数据没有copy到乙上来。

    解决办法:把刚才格式化后的上的元数据(我的在/opt/hadoop/dfs/name/current/下),如下图所示:

一个namenode能正常启动,状态为active,另一个namenode无法启动_第1张图片

手动copy到乙对应的文件夹下,即可解决上述问题。

    ps:在搭建hadoop的集群时会遇到各种问题,要想快速找出导致问题产生的原因,首选看日志!!

你可能感兴趣的:(一个namenode能正常启动,状态为active,另一个namenode无法启动)