zoukankan      html  css  js  c++  java
  • 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的数据都还是原来的,并没有置空。
  • 相关阅读:
    解决div嵌套时IE8和FF无法自适应高度
    64位windows系统安装javaee6.0不成功解决方案
    awk 处理
    mysql 事务控制
    mysql 事务控制
    mysql 保留的关键字
    mysql 保留的关键字
    expect set timeout -1 永不超时
    expect set timeout -1 永不超时
    aliyun 安装图形
  • 原文地址:https://www.cnblogs.com/jechedo/p/5922901.html
Copyright © 2011-2022 走看看