现在的位置: 首页 > 综合 > 正文

hadoop namenode 在磁盘空间快满时启动失败的处理方法

2013年09月02日 ⁄ 综合 ⁄ 共 2729字 ⁄ 字号 评论关闭
 邮件列表中得到的建议:

We had seen similar exception earlier reported by others on the list. What you
might want to try is to use a hex editor or equivalent to open up 'edits' and
get rid of the last record. In all cases, the last record might not be complete
so your namenode is not starting. Once you update your edits, start the namenode
and run 'hadoop fsck /' to see if you have any corrupt files and fix/get rid of
them.
PS : Take a back up of dfs.name.dir before updating and playing around with it.

----- Original Message ----
From: steph <ste@conviva.com>
To: core@hadoop.apache.org
Sent: Monday, August 4, 2008 8:31:07 AM
Subject: Re: EOFException while starting name node

2008-08-03 21:58:33,108 INFO org.apache.hadoop.ipc.Server: Stopping
server on 9000
2008-08-03 21:58:33,109 ERROR org.apache.hadoop.dfs.NameNode:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:178)
at org.apache.hadoop.io.UTF8.readFields(UTF8.java:106)
at org.apache.hadoop.io.ArrayWritable.readFields(ArrayWritable.java:90)
at org.apache.hadoop.dfs.FSEditLog.loadFSEdits(FSEditLog.java:433)
at org.apache.hadoop.dfs.FSImage.loadFSEdits(FSImage.java:759)
at org.apache.hadoop.dfs.FSImage.loadFSImage(FSImage.java:639)
at org.apache.hadoop.dfs.FSImage.recoverTransitionRead(FSImage.java:
222)
at org.apache.hadoop.dfs.FSDirectory.loadFSImage(FSDirectory.java:79)
at org.apache.hadoop.dfs.FSNamesystem.initialize(FSNamesystem.java:254)
at org.apache.hadoop.dfs.FSNamesystem.<init>(FSNamesystem.java:235)
at org.apache.hadoop.dfs.NameNode.initialize(NameNode.java:131)
at org.apache.hadoop.dfs.NameNode.<init>(NameNode.java:176)
at org.apache.hadoop.dfs.NameNode.<init>(NameNode.java:162)
at org.apache.hadoop.dfs.NameNode.createNameNode(NameNode.java:846)
at org.apache.hadoop.dfs.NameNode.main(NameNode.java:855)

Actually my exception is slightly different than yours. Maybe moving
edits file
and recreating a new one will work for you.

On Aug 4, 2008, at 2:53 AM, Wanjari, Amol wrote:

I'm getting the following exceptions while starting the name node -

ERROR dfs.NameNode: java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at
org.apache.hadoop.io.ArrayWritable.readFields(ArrayWritable.java:87)
at
org.apache.hadoop.dfs.FSEditLog.loadFSEdits(FSEditLog.java:455)
at org.apache.hadoop.dfs.FSImage.loadFSEdits(FSImage.java:733)
at org.apache.hadoop.dfs.FSImage.loadFSImage(FSImage.java:620)
at
org.apache.hadoop.dfs.FSImage.recoverTransitionRead(FSImage.java:222)
at
org.apache.hadoop.dfs.FSDirectory.loadFSImage(FSDirectory.java:76)
at
org.apache.hadoop.dfs.FSNamesystem.<init>(FSNamesystem.java:221)
at org.apache.hadoop.dfs.NameNode.init(NameNode.java:130)
at org.apache.hadoop.dfs.NameNode.<init>(NameNode.java:168)
at
org.apache.hadoop.dfs.NameNode.createNameNode(NameNode.java:795)
at org.apache.hadoop.dfs.NameNode.main(NameNode.java:804)

Is there a way to recover the name node without losing any data.

Thanks,
Amol

抱歉!评论已关闭.