Published

一 22 十月 2012

←Home

hadoop namenode启动不起来解决方法

放假回来,发现集群不工作了,namenode已不再,查看日志:

2012-10-22 11:00:48,234 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NumberFormatException: For input string: “”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Short.parseShort(Short.java:120)
at java.lang.Short.parseShort(Short.java:78)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.readShort(FSEditLog.java:1311)
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:541)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:1011)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:826)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:364)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:87)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:315)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:296)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:205)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:283)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:986)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:995)

2012-10-22 11:00:48,236 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:

大概是因为,首先是主节点的磁盘没空间了,建议先把集群各节点的剩余空间看下,最好有定时清理的程序。 腾出空间后,再重新启动,仍然有问题。那么,就有可能是namenode的资料有损了,到dfs.name.dir目录下查看一下,比较一下image中fsimage和current中fsimage的大小,将前面的拷进后面的替换掉(做好备份),再试试。 如果还不行,看你是否有这只secondarynamenode,如果有,将里面的文件覆盖掉dfs.name.dir下的,重新启动试试。 再不行的话,网上说是把namenode的current中所有文件备份好,然后格式化namenode,然后把备份的image拷贝回来,重启namenode所有服务后,

./bin/start-balancer.sh

就一切OK了。但是我怕hbase里的数据会丢失。 于是再找,发现一个方法竟然可行,具体原因也不是很明白

Could you backup your edits file, try $ printf “\xff\xff\xff\xee\xff” >
edits, and start HDFS? It should work.

就是把原来的edits备份下,再新的空的edits下写入上面的内容(注意要在新的空的文件下,不然我试过还是会有问题出现),然后,重启hadoop,问题解决!

Go Top
comments powered by Disqus