通过secondarynamenode恢复Namenode

备份

一般来说需要改以下配置文件。conf/master、conf/hdfs-site.xml和conf/core-site.xml这3个配置文件,修改部分如下:

  1. master:master中的ip为希望运行secondarynamenode进程的机器ip,一般不设置为namenode的ip
  2. hdfs-site.xml:这个配置文件要改1个参数:

<property>

<name>dfs.secondary.http.address</name>

<value>10.10.10.10:50090</value>

</property>

 

<property>
  <name>dfs.http.address</name>
  <value>10.10.10.11:50070</value>
  <description>
    The address and the base port where the dfs namenode web uiwill listen on.
    If the port is 0 then the server will start on a free port.
  </description>
</property>

第一个为secondarynamenode的ip,第二个为namenode的ip。

3.      core-site.xml:这里有2个参数可配置,但一般来说我们不做修改。fs.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时。fs.checkpoint.size表示一次记录多大的size,默认64M。

<property>
  <name>fs.checkpoint.period</name>
  <value>3600</value>
  <description>The number of seconds between two periodiccheckpoints.
  </description>
</property>

<property>
  <name>fs.checkpoint.size</name>
  <value>67108864</value>
  <description>The size of the current edit log (in bytes) thattriggers
       a periodic checkpoint even if thefs.checkpoint.period hasn't expired.
  </description>
</property>

  1. 把相应的配置复制到datanode上。
  2. 配置检查。配置完成之后,我们需要检查一下是否成功。我们可以通过查看运行secondarynamenode的机器上文件目录来确定是否成功配置。首先输入jps查看是否存在secondarynamenode进程。如果存在,在查看对应的目录下是否有备份记录。 

该目录一般存在于hadoop.tmp.dir/dfs/namesecondary/下面。

恢复

1、配置完成了,如何恢复。首先我们kill掉namenode进程,然后将hadoop.tmp.dir目录下的数据删除掉。制造master挂掉情况。

2、在配置参数dfs.name.dir指定的位置建立一个空文件夹;

3、从secondarynamenode远程拷贝namesecondary文件到namenode的namesecondary

4、启动namenode的时候采用

hadoopnamenode -importCheckpoint

正常启动以后,屏幕上会显示很多log,这个时候namenode就可以正常访问了。

5、用hadoop fsck /user命令检查文件Block的完整性

hadoopfsck /

6、停止namenode,使用crrl+C或者会话结束

7、删除namesecondary目录下的文件(保存干净) 

[root@masternamesecondary]# rm -rf *

8、正式启动namenode

[root@masterbin]# ./hadoop-daemon.sh start namenode

恢复工作完成,检查hdfs的数据

总结
  1. secondarynamenode可以配置多个,master文件里面多写几个就可以。
  2. 千万记得如果要恢复数据是需要手动拷贝到namenode机器上的。不是自动的(参看上面写的恢复操作)。
  3. 镜像备份的周期时间是可以修改的,如果不想一个小时备份一次,可以改的时间短点。core-site.xml中的fs.checkpoint.period值。
  4. 关于secondarynamenode,它不是namenode的备份进程,说白了,namenode挂了,如果secondarynamenode没挂,很不幸,集群一样无法正常工作。
  5. secondarynamenode一般来说不应该和namenode在一起,所以,我把它配置到了datanode上。
  6. SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint

总共分五步: 

  1. SecondaryNameNode通知NameNode准备提交edits文件,此时主节点产生edits.new
  2. SecondaryNameNode通过http get方式获取NameNode的fsimage与edits文件(在SecondaryNameNode的current同级目录下可见到temp.check-point或者previous-checkpoint目录,这些目录中存储着从namenode拷贝来的镜像文件) 
  3. SecondaryNameNode开始合并获取的上述两个文件,产生一个新的fsimage文件fsimage.ckpt
  4. SecondaryNameNode用http post方式发送fsimage.ckpt至NameNode
  5. NameNode将fsimage.ckpt与edits.new文件分别重命名为fsimage与edits,然后更新fstime,整个checkpoint过程到此结束。 



  1. 关于master:一般的安装手册都是说写上namenode机器的IP或是名称。这里要说明一下,这个master不决定哪个是namenode,而决定的是secondarynamenode(决定谁是namenode的关键配置是core-site.xml中的fs.default.name这个参数)。所以,这里直接写上你的datanode的IP或机器名称就可以了。一行一个。
  2. 需要用到的一些路径位置:
  1. 在conf/core-site.xml中(为tmp的地址,namesecondary在tmp/dfs/下)
  2. 在conf/hdfs-site.xml中(为name的地址)
  3. 在conf/core-site.xml中(为namesecondary的地址)

  1. 值得推荐的是,你要注意备份你的dfs.name.dir和 ${hadoop.tmp.dir}/dfs/namesecondary。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值