hadoop namenode down的遭遇
2013-04-19 13:36
288 查看
正在往测试环境的hadoop集群上传文件,上传失败,提示put: Call to mymaster/123.168.12.6:9000 failed on local exception: java.io.EOFException
后来关闭集群,并重启机器,namenode进程还是起不来,看日志,报错提示为:
java.io.IOException: Incorrect data format. logVersion is -18 but writables.length is 0.
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:544)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:992)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:812)
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:311)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:292)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)
2013-03-13 14:20:19,922 INFO org.apache.hadoop.ipc.Server: Stopping server on 9000
2013-03-13 14:20:19,923 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: Incorrect data format. logVersion is -18 but writables.length is 0.
找了很久原因,后来发现是磁盘空间满了。清空一些文件,重启hadoop,仍然报一样的错误,后来在网上找资料,才知道有可能是edits文件出错了。
切换到dfs.name.dir目录下,进入current目录,在命令行执行printf "\xff\xff\xff\xee\xff" > edits,记得先把edits文件备份。然后重启hadoop,问题解决,数据也没丢失。
==========================网络原文1====================
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)
大概是因为,首先是主节点的磁盘没空间了,建议先把集群各节点的剩余空间看下,最好有定时清理的程序。
腾出空间后,再重新启动,仍然有问题。那么,就有可能是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,问题解决!
========================网络原文2=====================================
当写元数据的分区写满,可能导致namenode挂掉从而导致及时清理出大块的空间也无法启动namenode,那此时系统namenode会报错
org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NumberFormatException: For input string:“”
这是因为edit文件错误,此时执行 printf "\xff\xff\xff\xee\xff">edits 将edits 清空就可以 启动namenode
======================================================================
后来关闭集群,并重启机器,namenode进程还是起不来,看日志,报错提示为:
java.io.IOException: Incorrect data format. logVersion is -18 but writables.length is 0.
at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:544)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:992)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:812)
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:311)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:292)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)
2013-03-13 14:20:19,922 INFO org.apache.hadoop.ipc.Server: Stopping server on 9000
2013-03-13 14:20:19,923 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: Incorrect data format. logVersion is -18 but writables.length is 0.
找了很久原因,后来发现是磁盘空间满了。清空一些文件,重启hadoop,仍然报一样的错误,后来在网上找资料,才知道有可能是edits文件出错了。
切换到dfs.name.dir目录下,进入current目录,在命令行执行printf "\xff\xff\xff\xee\xff" > edits,记得先把edits文件备份。然后重启hadoop,问题解决,数据也没丢失。
==========================网络原文1====================
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)
大概是因为,首先是主节点的磁盘没空间了,建议先把集群各节点的剩余空间看下,最好有定时清理的程序。
腾出空间后,再重新启动,仍然有问题。那么,就有可能是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,问题解决!
========================网络原文2=====================================
当写元数据的分区写满,可能导致namenode挂掉从而导致及时清理出大块的空间也无法启动namenode,那此时系统namenode会报错
org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NumberFormatException: For input string:“”
这是因为edit文件错误,此时执行 printf "\xff\xff\xff\xee\xff">edits 将edits 清空就可以 启动namenode
======================================================================
相关文章推荐
- hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNode at hadoop
- Hadoop2.7.1 安装提示SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException
- hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNode at hadoop
- Hadoop 解除 "Name node is in safe mode"(转)
- Hadoop中namenode/datanone没有启动
- Hadoop中namenode/secondarynamenode/yarn的一些配置
- hadoop 异常记录 Cannot delete /tmp/hadoop/mapred/system. Name node is in safe mode.
- hadoop集群搭建-Namenode HA和ResourceManager HA
- hadoop错误ERROR namenode.NameNode (NameNode.javamain(1657)) - Failed to start namenode java.net.BindException:Port in use:host1:50070
- CHD4B1(hadoop-0.23)实现NameNode HA安装配置
- hadoop 不使用hostname,使用ip遇到的问题(Datanode denied communication with namenode because hostname cann)及解决方案
- hadoop2.X配置SecondaryNameNode
- Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析
- hadoop报错java.io.IOException: Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured
- Hadoop 2.0 NameNode HA和Federation实践
- hadoop Secondary NameNode
- Hadoop 解除 “Name node is in safe mode”
- hadoop安全模式(rm: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /sort. Name )
- Hadoop 解除 "Name node is in safe mode"
- Hadoop 2.0 NameNode HA和Federation实践