这段时间折腾的都是hadoop和lucene,总结了hadoop在运营过程中出现问题时的解决方案,请大家指教!


HDFS(0.20.2)运营中急救方案

1           Namenode 挂掉(secondarynamenode无影响)

如果Namenode挂掉,如果能立即起来通过,start-dfs.sh 能够重新起来则可以正常使用。否则按照以下操作。下面所有操作前提是有完整的secondarynamenode。

1)     
 在非secondarynamenode服务器中选择datanode作为namenode。(目前在正式文档中没有发现,建议采用第二种,但在测试中没发现问题)
 
a)          
 Kill掉所有服务。
b)         
 修改新namenode服务器 配置文件:core-site.xml,masters,slaves等相关文件。
c)         
 修改hosts文件
d)         
 重新配置各节点 ssh ,使新namenode到其他datanode 正常无密码ssh登陆
e)          
 将运行secondarynamedode机器上的hadoop.tmp.dir/dfs/namesecondary 拷贝到新namenode服务器hadoop.tmp.dir/dfs目录。
f)          
 将namesecondary改名为name
g)         
 bin/start-dfs.sh启动hdfs。
2)     
 在非secondarynamenode服务器中选择datanode作为namenode。通过导入以前的检查点来恢复namenode。
 
a)          
 Kill掉所有服务。
b)         
 修改新namenode服务器 配置文件:core-site.xml,masters,slaves等相关文件。
c)         
 修改hosts文件
d)         
 重新配置各节点 ssh ,使新namenode到其他datanode 正常无密码ssh登陆
e)          
 在namenode服务器core-site.xml中配置fs.checkpoint.dir(默认是在$hadoop.tmp.dir/dfs/ namesecondary).
<property>
  <name>fs.checkpoint.dir</name>
  <value>/home/hadoop/hadoop-data/dfs/namesecondary</value>
</property>
f)          
 将运行secondarynamedode机器上的hadoop.tmp.dir/dfs/namesecondary 拷贝到namenode服务器fs.checkpoint.dir目录.
g)         
 执行bin/hadoop namenode –importCheckpoint 导入检查点。
h)         
 执行bin/start-dfs.sh 启动dfs.

 

 

 

2           Datanode挂掉(不带secondarynamenode)

1)      原服务器完全坏掉,起不来,只能引入新的datanode。

                           i.      从其他datanode拷贝hadoop所有配置到新服务器

                         ii.      设置hosts,将所有datanodes 和namenode 设置hosts

                        iii.      设置ssh无密码登陆,并测试

                       iv.      在namenode conf 的slaves中配置新加datanode

                         v.      在新加datanode上通过bin/hadoop-daemon.sh start datanode  启动该新datanode。

2)         原服务器可以立即起来

                     i.      因为namenode slaves有该datanode,可以直接在namenode中执行bin/start-dfs.sh 启动

                   ii.      也可以在该服务器 通过bin/hadoop-daemon.sh start datanode启动

3           Datanode挂掉(带secondarynamenode)

1)    Namenode正常运行情况下,如果该datanode可以立即投入使用,则直接在namenode中执行bin/start-dfs.sh 启动

2)    Namenode正常运行情况下,如果该datanode无法使用,则考虑新增datanode,并配置secondarynamenode。

在新节点 配置文件hdfs-site.xml中 配置:

<property>
   <name>dfs.http.address</name> 
   <value>netease-namenode-test:50070</value> 
  </property>

该配置在namenode使用默认即可。如果添加上通过外网访问netease-namenode-test:50070可能会由于网段不同导致访问不到。

 

使secondarynamenode能够post请求到namenode。

然后在namenode masters中增加 新的secondarynamenode 并配置hosts

使用bin/start-dfs.sh 启动。