CDH集群主节点宕机恢复

1       情况概述

公司的开发集群在周末莫名其妙的主节点Hadoop-1的启动固态盘挂了,由于CM、HDFS的NameNode、HBase的Master都安装在Hadoop-1,导致了整个集群都无法使用,好在数据不在启动盘。

Hadoop-1的系统必须重装,但是不能重装集群,因为要将之前的数据全部保留恢复,所以只能通过集群恢复的手段将集群重新跑起来。

主要服务角色安装情况:

Hadoop-1:

 CM,HDFS( NN,DN ),HBase(HMaster, RegionServer),YARN(NM),Zookeeper

Hadoop-2:

HDFS( SNN,DN ),HBase(HMaster, RegionServer),YARN(RM,NM),Zookeeper

Hadoop-3,Hadoop-4:

HDFS( DN ),HBase(RegionServer),YARN(NM),Zookeeper

 

说明:在写本文档的时候,出现此问题的研发集群已经恢复完成,但是很遗憾没有留下证据,所以这里利用了一个临时的集群重现该问题,并执行恢复

2       面临的问题

  1. Hadoop-1系统重装后CM必须得重装,那么怎么将其余好的节点重新加入到新的CM。
  2. 新建的NameNode怎么重新使用原来的NameNode的数据,怎么重新管理其余结点的DataNode。

3       恢复记录

3.1   重装系统

最小化安装CentOS 64位系统,

准备好基础环境,恢复到和原来的Hadoop-1一样。

注意要点:

  1. 重新配置Hosts
  2. 重新配置ssh的无密钥登录。
  3. 重新配置时钟服务
  4. 重新配置CentOS,及CM、CDH的网络镜像源
  5. 挂载数据盘到原来的位置

3.2   重装CM

在Hadoop-1中利用CM的引导文件cloudera-manager-installer.bin重装CM服务,剩下的就是界面操作。前面的步骤和搭建新集群一样,以下为截图:

1.

 

在到这个界面之前的步骤和安装全新集群基本一样的,因此之前的步骤参照集群搭建文档即可,重点就是这个图,这个地方是选择服务角色的安装主机,一定要和之前的集群保持一致

 

上面这张图是更改后的,根据原来的集群,NameNode在test-hadoop-1上,而SNN在test-hadoop-2上面,每个节点都存在DataNode,至于HBase的配置还是理论上说可以随意(因为它的数据是在HDFS和Zookeeper上只要它俩对了,HBase的数据自然就恢复了。),但是还是建议和原来的保持一致。

Zookeeper要保持和原来一致。

 

Yarn主要用于计算,其实也可以是随意的,但是它有NM,所以还是建议保持和原来一致

CM,Spark可以配置是可以随意的,因为这两个东西跟我们的数据没太大关系。

接着往下走,

要是安装了要是原来的集群的自定义数据库不再主节点上,则直接在这里指过去使用原来的数据库,否则直接联本地的。

接着往下走,

 

这一步是重中之重,一定要注意将数据目录指定到原来的集群的数据目录,保持高度一致,对应修改完就可以启动了。

 

启动后HDFS报错,因为NameNode会去尝试format,但是已经有数据了,所以format失败,那么基本上意味着我们数据恢复成功80%了,我们进入CM的控制界面,重启所服务,要是不出意外,集群修复就完成了。

 

4       可能的错误

 

4.1   Zookeeper

若启动时报zookeeper启动异常,

完整日志如下:

 

 

这个错是个很奇怪的错,只发生在新建的主节点上,是因为挂载原来的数据盘时,原来的目录及文件的用户及用户组发生了变化,如下:

新建的主节点test-hadoop-1:

原来的数据结点test-hadoop-2:

 

 

可以看到在新建的主节点test-hadoop-1中zookeeper的用户和用户组都成了solr,我们只需要将其修改过来就好了。

再次启动zookeeper若报如下错误:

则在对应的节点重启CM的agent

再次启动zookeeper:

其他的权限错误,就不再说了,对照着改就好了。

 

5       总结

通过这次集群恢复,有以下几点收获,

    1. CM搭建的Hadoop集群中服务和数据是分离的,就算是搭建一个全新的集群,只要将数据目录指定到原来的目录,就可以使用原来的数据。(按理说所有Hadoop集群都是这样。)
    2. 要大胆尝试。因为之前想到集群的主节点都挂了,无法避免重新搭建,数据只能全清空,迫于数据的重要性,在测试集群试验了把新搭集群但是数据目录还是原来的,发现hdfs,hbase,kafka,zookeeper的数据都还是原来的,并没有置空。
posted @ 2016-09-30 10:15  jechedo  阅读(6089)  评论(3编辑  收藏  举报