一、环境

Hadoop 0.20.2、JDK 1.6、Linux操作系统

二、背景

上周五的时候,由于操作系统的原因,导致JDK出现莫名的段错误。无论是重启机器还是JDK重装都无济于事。更可悲的是,出问题的机器就是Master。当时心里就凉了半截,因为secondarynamenode配置也是在这个机器上(默认的,没改过)。不过万幸的是这个集群是测试环境,所以问题不大。借这个缘由,我将secondarynamenode重新配置到其他机器上,并做namenode挂掉并恢复的测试。

三、操作

1、关于secondarynamenode网上有写不错的文章做说明,这里我只是想说关键一点,它不是namenode的备份进程,说白了,namenode挂了,如果secondarynamenode没挂,很不幸,集群一样无法正常工作。这里有个文档翻译的很好,我链接一下:http://blog.csdn.net/AE86_FC/archive/2010/02/03/5284181.aspx

2、secondarynamenode一般来说不应该和namenode在一起,所以,我把它配置到了datanode上。配置到datanode上,一般来说需要改以下配置文件。conf/master、conf/hdfs-site.xml和conf/core-site.xml这3个配置文件,修改部分如下:

master:一般的安装手册都是说写上namenode机器的IP或是名称。这里要说明一下,这个master不决定哪个是namenode,而决定的是secondarynamenode(决定谁是namenode的关键配置是core-site.xml中的fs.default.name这个参数)。所以,这里直接写上你的datanode的IP或机器名称就可以了。一行一个。

hdfs-site.xml:这个配置文件要改1个参数:

0.0.0.0改为你的namenode的IP地址。

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

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 periodic checkpoints.
  </description>
</property>

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

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

截图1

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

四、恢复

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

2、在配置参数dfs.name.dir指定的位置建立一个空文件夹; 把检查点目录的位置赋值给配置参数fs.checkpoint.dir; 启动NameNode,并加上-importCheckpoint。(这句话抄袭的是hadoop-0.20.2/hadoop-0.20.2/docs/cn/hdfs_user_guide.html#Secondary+NameNode,看看文档,有说明)

3、启动namenode的时候采用hadoop namenode –importCheckpoint

五、总结

1、secondarynamenode可以配置多个,master文件里面多写几个就可以。

2、千万记得如果要恢复数据是需要手动拷贝到namenode机器上的。不是自动的(参看上面写的恢复操作)。

3、镜像备份的周期时间是可以修改的,如果不想一个小时备份一次,可以改的时间短点。core-site.xml中的fs.checkpoint.period值。

4、写的不对或是有疑问的欢迎发邮件到dajuezhao@gmail.com

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐