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

hadoop namenode 数据恢复

2013年01月30日 ⁄ 综合 ⁄ 共 1864字 ⁄ 字号 评论关闭

在一次hadoop的重启过程中,重启失效,只能杀掉hadoop的namenode进程。

再重启的时候,出现如下问题:

2012-05-18 15:17:35,313 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NullPointerException
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.unprotectedSetTimes(FSDirectory.java:1356)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.unprotectedSetTimes(FSDirectory.java:1345)
    at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:774)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:1009)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:827)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:365)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

查看name/current

drwxr-xr-x 2 hadoop hadoop     4096 2012-05-18 16:30 .
drwxr-xr-x 8 hadoop hadoop     4096 2012-05-23 09:45 ..
-rw-r--r-- 1 hadoop hadoop   864517 2012-05-18 16:30 edits
-rw-r--r-- 1 hadoop hadoop 20914385 2012-05-18 16:30 edits.new
-rw-r--r-- 1 hadoop hadoop 13644512 2012-05-18 16:30 fsimage
-rw-r--r-- 1 hadoop hadoop        8 2012-05-18 16:30 fstime
-rw-r--r-- 1 hadoop hadoop      100 2012-05-18 16:30 VERSION

出现了一个edits.new文件。说明在重启hadoop的时候没有将edits的信息合并到fsimage中,造成namenode出错。

将/tmp/dfs/namesecondary/current
中的edits,fsimage,fstime,VERSION拷贝到name/current中。
这个实际是将secondarynamenode定时镜像的文件覆盖掉出错的name节点的数据。

重启hadoop。正常启动。
这种方式,需要保证secondarynamenode是正确运行的,配置正确,每隔1个小时备份一次。这样能尽量保证数据的恢复。

抱歉!评论已关闭.