HBase HDFS的一次升级问题

2020-10-29 11:13:10 浏览数 (1)

背景

  • 老版本HDFS存在空间泄漏以及空间预分配bug导致存在HBase RS进程挂掉风险
  • RS内存配置过高会导致系统内存不足造成请求抖动和OOM RS进程挂掉,RS默认配置77G(60%),其他组件默认配置40G(31%),修改重启后RS 62G(48%)避免系统内存不足。

经过

升级core-2过程中,高风险节点core-5(内存水位解决临界值)发生宕机,造成业务写入抛错, core-5宕机恢复流程完成,hbase服务恢复,Flink任务Failover后自动消费积压的kafka数据。

直接原因

本身带病的高危集群,升级HDFS过程中要移动region做热升级,触发内存临界值节点导致RS进程挂掉, 带来了写入该RS的一组数据(rowkey分布)写入失败。

思考:

1、升级,重启等高危操作,先切换至备库上(需要备库版本新,无大缺陷,主备规格一致),主库滚动重启OK后,再从备库切换为主库。

2、升级,重启等高危操作,不切换到备库上,在主库有宕机的情况下,人工在后台切换主备,耗时数秒。 主备容灾作为极端情况下的兜底方案,需要人为手动去切换主备库, 数秒时间差内还是会有写入数据失败的情况发生, 后期业务侧的异常捕获代码中,将写入失败的数据分流至第三方存储(MySQL或MQ)中, 即业务状态数据写入HBase在超时报错情况下,对缓存做数据做写入重试,避免发生数据不一致, 同时可以解决之前已经存在的 由于HBase抖动带来数据不一致,需要产品运维提工单修改数据的偶发问题。

关于Dual-Service

双活方案:99%流量打入A集群,读写RT较高的毛刺数据自动打入B集群, 数据通道对A,B集群之间数据做百ms级的延时同步。 带状态的业务侧不能容忍的延时,Dual-Service方案不适合这样的场景。

0 人点赞