R01 - 013、导致HBase挂掉的场景?

初学耗时:0.5h

注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

一、导致HBase挂掉的场景?



记忆词:

  ...

R01 - 999、HBase、实时数据库


ギ 舒适区ゾ || ♂ 累觉无爱 ♀





一、导致HBase挂掉的场景?

  • HMaster会出现异常(执行abort())停止的场景如下:
  1. zk异常导致的master停止服务是最常见的场景,涉及操作包含但不限于以下:
    a) Zk链接超时,超时时间通过zookeeper.session.timeout配置,默认为3分钟, 如果fail.fast.expired.active.master配置的值为false(默认为false),则不会立即abort,而是会尝试恢复zk的过期session;
    b) 在打开region后,需要从zk中删除opened节点,如果zk有该节点,但是删除失败;
    c) 在split region过程中,从zk删除split节点时;
    d) Master节点改变时;
    e) 从zk中创建unassigned节点时;
    f) 在下线disabled的regoin时,从zk中删除disabled的region如果发生zk异常;
    g) 还有很多操作zk的节点时如果出现异常。
  2. 在assign时,如果设置region为offlined状态,但是region之前的状态不是closed或者offlined;
  3. 在assign时,如果无法从.META.表中读取region信息;
  4. 把新的hbase集群加入到正在运行的hbase集群时,如果zk的/hbase/unassigned节点没有数据;
  5. 使用线程池批量分配region时,如果出现未被捕获的异常,实现方式如下:
  6. 在启动master的服务线程时,出现了异常;
  7. 在hdfs中检查hbase日志路径时,发现了dead的server时,需从hdfs中读出log,如果出现io异常需要检查hdfs文件系统,如果fsOk状态为true,但是通过FSUtils工具类进行检查时出现io异常;
  8. 在校验并且分配-ROOT-的region时,如果zk异常,或者其它异常(其它异常会重试10次),比如:“-ROOT- is onlined on the dead server”。


  • HRegionServer会出现异常停止(执行abort())服务的场景如下:
  1. 在读写hdfs时如果出现IOException异常,此时会发起hdfs的文件系统检查(checkFileSystem)
  2. Regionserver的服务线程出现了未捕获异常;
  3. 在启动HRegionServer时出现异常;
  4. 在进行HLog回滚时,出现异常;
  5. 在flush memstore时,如果持久化失败,会重启RS,在重启中把hlog的内容重新加载到memstore;
  6. 出现zk异常,包括但不限于以下场景:
    a) Zk链接超时,超时时间通过zookeeper.session.timeout配置,默认为3分钟,与master不同,如果zk操作不会重试;
    b) 启动HRegionServer时出现KeeperException异常;
    c) 在进行split操作时,如果出现异常会进行回滚操作,在回滚过程中需要从zk中删除region的spliting状态,如果删除时出现KeeperException或者回滚的其它操作出现异常;
    d) 在打开region时,出现了KeeperException异常;
    e) 在进行hbase集群复制时,很多与zk交互的操作出现KeeperException异常时均会导致abort;
  7. 在close region时,如果出现异常,比如:不能成功的flush memstore;
  8. Flush memstore时,如果HLog发现该region已经在flush则会强制终止JVM,采用的是Runtime.getRuntime().halt(1)方法,该方法不会执行正常退出的关闭钩子,从而不会flush RS的所有region,也不会迁移region,只有等待ZK的session超时后master才会发现该RS不可用,做迁移工作。


  • 总结:Hbase挂掉的可能性有很多,主要由zk或者hdfs的问题导致,因此zk、hdfs的可用对于hbase极其重要,关于zk:
  1. zk如果停止了服务则在很多时候会导致master、rs挂掉,hbase集群基本上就失去了服务的能力,因此zk一定要是稳定可靠的,当client已经于rs建立了链接,这时zk挂掉,如果不进行split等小数与zk交互失败会导致触发rs的abort()的操作时rs还是可以提供服务的;
  2. 如果rs/master进行了长时间的gc或者改动了服务器时间,导致出现zk的session超时会导致rs/master停止服务,目前已经出现了2次因为服务器时间变化导致hbase停止服务的事故;
  3. 别轻易人为改变zk的hbase节点数据,master/rs在进行很多操作时会比较依赖zk的数据,如果发现不符合预期可能会导致master/rs停止服务,尤其是master。
  • Master通过ZK知道RS是否可用,一般情况下RS在停止服务时均会正常退出,在正常退出时会从ZK中删除/hbase/rs/$regionserver的节点,Master会监听该节点的被删除,从而较快的(速度取决于所有region关闭时间)对该RS负责的region进行重新分配,如果是强制退出,比如 kill -9或者出现HRegionServer挂掉的第8条时则只有等待ZK的session超时时才会删除RS在ZK的节点(RS在ZK中添加节点时采用的是CreateMode.EPHEMERAL模式,该模式创建的节点会在session关闭时自动删除),那时Master才会进行重新assign。
  • Kill RS的进程也是正常退出(不能使用kill -9强制退出),RS使用Runtime的addShutdownHook方法注册了jvm关闭钩子,在关闭钩子中会执行RS的退出逻辑,实际上hbase-daemon.sh的停止RS就是采用kill。


天若有情天亦老,人间正道是沧桑。

- - - - - - - - - - - - - - - - - - - - - - - - - - - -


※ 世间诱惑何其多,坚定始终不动摇。

以下哪一项不属于网络时代企业面临的机遇?


A、降低交易成本
B、获取知识的能力增强
C、盈利能力增强
D、更好地满足顾客定制化需求

C
alt



天若有情天亦老,人间正道是沧桑。

- - - - - - - - - - - - - - - - - - - - - - - - - - - -


注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!



天若有情天亦老,人间正道是沧桑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值