报错:

master.HMaster: Failed to become active master

环境: 
  OS: CENTOS6.5

  Hadoop: 2.7.1

  Hbase: 1.0.4

  ZooKeeper: 3.4.6

动作: 

  Hbase 升级版本1.0.4 --> 1.2.4


       下午接到老朋友电话,说Hbase Master开不起来,因为是生产环境,所以异常着急。事发在凌晨4点多,有一个服务器的硬盘坏了,导致该服务器的Hadoop服务异常了,Hbase也受到了影响,应该是程式正在写hbase的进程受到影响,随之Hbase集群挂掉了。管理员接到产线电话后,VPN连接到服务器重启服务,hadoop开启是正常的,可是Hbase的Master一直无法重启。并报错,如下:image.png

        参考了很多很多的文章,一直无法解决此问题,一般Hbase的问题解决就是2个思路,要么内存分配有问题,要么就是参数异常,这次显然并不简单,我们有怀疑过是不是Zookeeper异常,导致一直无法获得ClusterID,可是如果Zookeeper异常的话hadoop不可能开得起来,所以排除Zookeeper异常造成。

       最后看到google上有提到,是bug的影响。最终,定出2种方案,要么升级Hbase版本,要么数据清除重构。相对之下,更新Hbase版本比较快和安全,因为Hbase的数据是存储在Hadoop里的,Hadoop的数据没有问题,所以升级Hbase不会对Hadoop的数据产生影响。
image.png

        由于接近吃饭时间了,我就去外面打个饭,还没有打包完,就接到好消息,说数据库集群开起来了,而且数据没有丢,一切正常。

        整个解决过程接近4个小时,花了很多时间去研究问题,也尝试了很多的方法,最终要升级数据库集群版本,这还是第一次。Bug这种东西,不会经常遇到,可是遇到的时候就是最郁闷的时候,要么绕过,要么迎面解决。这次我们是迎面解决了问题。Yeah.