如何配置Hadoop的 Secondary节点 & NameNode节点失效恢复

时间:2024-03-23 16:31:38

原创:

 

第一部分: 如何设置Secondary NameNode节点(单独的)

 

1. 在masters文件中添加 Secondary节点的主机名。 

 

2.  修改hdfs-default.xml  文件

 

 

      <property>   

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

            <value>client148.hadoop.local:50070</value>

      </property>   (NameNode节点开放的HTTP服务,是由Secondary 节点获取fsimage ,edits 文件的通道)

 

      <property>

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

           <value>client147.hadoop.local:50090</value> 

      </property>  (Secondary 节点开放的HTTP服务,是由NameNode节点获取新的fsimage 文件的通道)

 

 

如果dfs.secondary.http.address 第二项不设置会产生一下错误:

 

17 13:31:57,434 WARN org.mortbay.log: /getimage: java.io.IOException: GetImage failed. java.net.ConnectException: Connection refused

 

更详细的错误描述: http://blog.csdn.net/chlaws/article/details/6981574

 

 

两个参数:

 

<name>fs.checkpoint.period</name>
<value>3600</value>  // f
s.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时

 

<name>fs.checkpoint.size</name>
<value>67108864</value> // 
fs.checkpoint.size定义了edits日志文件的最大值,一旦超过这个值会导致强制执行备份(即使没到检查点的最大时间间隔)。默认值是64MB。


第二部分: NameNode节点无法恢复的时候,如何新建一个NameNode节点

 

1. 新建 dfs.name.dir 一个目录

 

例如: mkdir  {/opt/data/test}

 

2. 把SecondaryNameNode节点中 {fs.checkpoint.dir} 的所有内容拷贝到新的NameNode节点的{fs.checkpoint.dir} 目录中

 

 

  <name>fs.checkpoint.dir</name>

  <value>${hadoop.tmp.dir}/dfs/namesecondary</value> // 默认设置

 

 

3. 在新的NameNode节点中执行命令  hadoop namenode -importCheckpoint


如何配置Hadoop的 Secondary节点 & NameNode节点失效恢复

4. 检查 {dfs.name.dir} 此目录中是否有了文件,hadoop fsck /  查看文件内容是否正常。 

 

如果一切OK,NameNode节点恢复正常。 Good Luck!

 

 

如对以上有疑问或建议请Mail to: biansutao# gmail # com

 

 

重要提示: 在一小间隔中间添加到HDFS中的数据将在恢复数据的时候丢失。

 

如果想减少这种数据丢失,可以把Checkpoint 的时间调低一点,比方说5分钟,15分钟。 

 

这个需要综合考虑数据量和集群规模。

 

通过设置 {dfs.name.dir} 设置多个目录(例如:NFS)可以保存NameNode节点的fsimage和edits文件。

这样减少数据的损失。

 

<property>

  <name>dfs.name.dir</name>

  <value>${hadoop.tmp.dir}/dfs/name</value>

  <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsimage).  If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

</property>