hadoop namenode 数据恢复

在一次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个小时备份一次。这样能尽量保证数据的恢复。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "hadoop namenode -format" 是用于格式化 Hadoop 集群的 Namenode 的命令。它将删除 Namenode 上所有数据,并初始化一个新的 Namenode 存储区。在运行这个命令之前,请务必确保已经备份了重要数据,因为格式化 Namenode 后数据将不可恢复。 ### 回答2: Hadoop是一个开源的分布式计算框架,用于处理大规模数据的分布式存储和处理。它由一个分布式文件系统(HDFS)和一个分布式计算框架(MapReduce)组成,可以在大规模集群上运行,可以轻松处理大数据的存储和计算。 在Hadoop中,Namenode是HDFS的一个关键组件,它负责管理文件的命名空间和权限控制等,它也是HDFS的元数据存储的地方。当我们启动一个Hadoop集群时,我们需要确保Namenode的元数据是准确和可用的。 hadoop namenode -format是一个命令,它的主要作用是将Namenode的元数据格式化为一个全新的空间,以便在集群上使用。它会删除集群中当前Namenode上的所有数据,并创建一个新的Namenode的文件系统命名空间。换句话说,通过运行hadoop namenode -format命令,我们可以在不关闭整个集群的情况下重置Namenode上的所有元数据。 但请注意,运行此命令将删除所有Namenode上的数据,因此必须谨慎使用。此命令不会对Datanode上的数据进行任何更改。因此,我们可以使用如下步骤重新格式化Hadoop集群: 1. 关闭Hadoop集群。 2. 运行hadoop namenode -format命令来格式化Namenode上的数据,这将删除所有Namenode上的数据。 3. 启动Hadoop集群,这将创建一个新的元数据格式。 4. 确认新的集群元数据正在运行。 总之,通过运行hadoop namenode -format命令,我们可以确保Namenode的元数据准确和可用,并重新启动我们的Hadoop集群。但是,在使用这个命令之前,必须小心谨慎,因为这将删除Namenode上的所有元数据。 ### 回答3: hadoop namenode -format是一个Hadoop命令,旨在对Hadoop分布式文件系统(HDFS)的名称节点进行格式化。该命令是将该名称节点设置为初始状态的一种方法,其中所有数据都将被清除并且将重新设置初始配置。在Hadoop集群中进行格式化操作之前,需要确保停止所有节点的工作,或者在转移节点之前彻底备份数据。 Hadoop的分布式文件系统(HDFS)由维护元数据的名称节点和存储数据块的数据节点组成。名称节点存储有关HDFS中所有块和它们所在位置的元数据。此外,名称节点还维护有关文件系统中所有文件和目录的信息。因此,名称节点对于HDFS中的文件和目录是绝对必要的,因为在没有名称节点的情况下,数据节点不能找到要读取或写入的块。 在Hadoop分布式文件系统中,重要的是要记住,HDFS的数据被划分为块,然后分布在许多数据节点上。这意味着,如果名称节点在某种方式上发生故障或缺少数据,则无法访问集群中存储的任何数据。因此,当我们使用hadoop namenode -format命令进行格式化操作时,名称节点的所有数据都将被删除。 在进行格式化操作之后,必须重新启动名称节点和数据节点。在启动过程中,它将创建默认块大小和副本的文件系统。默认情况下,每个块的大小为128 MB,而每个块的副本数是3。我们可以使用Hadoop配置文件更改这些默认值。 总之,hadoop namenode -format命令是重置Hadoop分布式文件系统(HDFS)的名称节点状态的一种方式。在执行此操作之前,请确保已备份HDFS中的所有数据,以避免数据丢失。因此,请谨慎操作!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值