HBase启动后RegionServer自动挂原因及解决办法【ntp】

前天重新在集群配置了一遍Hbase,./start-hbase.sh后各个节点都运行正常,进入hbase shell之后也能正常的增删查改,高兴了一番。今天再启动发现进行普通的status\list\create操作都会报出Master is initializing的错。然后在各个节点jps后发现所有从点的RegionServer都挂了,主节点的Hmaster还正常运行着。

     在从节点查看日志后发现报错如下:

      报错信息也很明确:Master rejected startup because clock is out of sync。由于超出同步时间差,所以主节点拒绝启动regionserver。Hbase设置节点间同步最大时间差是30s。之前配置集群时有注意到一定要保持每个节点系统时间保持一致,然而看到各个虚拟机时间差不大就没怎么在意。由于我开的是虚拟机集群,重启虚拟机后,我的各个节点系统时间差有点大,所以才引发上述错误。

      zookeeper在同步和管理集群时依赖节点系统时间,每隔一定周期zookeeper master会监测所有节点的连接状态。所以解决办法就是利用ntp对集群局域网进行时间同步。

      网上找到一个在centos同步系统时间教程[http://cn.soulmachine.me/blog/20140124/],经过一番努力,终于成功启动hbase集群。

总结:相比于单机环境,服务器集群对系统时间非常敏感,应时刻保持同步。保持一个ntp服务器连接外网进行时间同步,ntp客户端对ntp服务器请求同步即可。

你可能感兴趣的:(Linux,学习笔记,Hadoop开发)