加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

hadoop namenode启动不起来解决方法

(2012-10-22 12:49:35)
标签:

it

放假回来,发现集群不工作了,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,问题解决!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有