处理hbase无法启动问题
作为IT那活儿推荐网的小编小本本,今天给大家分享处理hbase无法启动问题的经验。某日我们接到客户反馈测试环境中的hbase服务无法启动,经过定位发现是hbaseregions负载过大崩溃,进一步导致zk实例数据异常最终无法正常启动完成,让我们来看看具体如何处理。

故障处理过程
以下是我们处理hbase无法启动的具体步骤及操作解析:
- 登录CM管理界面,发现登录正常,但是集群处于关闭状态。
- 检查集群节点磁盘状态,发现状态正常,未有磁盘满的节点情况出现。
- 尝试对zookeeper服务进行启动,发现无法启动,报错拒接连接。
- 检查zookeeper实例,发现zk的实例被删除了一个,进一步检查zk的数据目录,发现有一个log文件大小为0,怀疑此最新的异常log导致zk无法启动。
- 对zk的节点数进行恢复,并将异常的log文件log.d161f9进行删除,同时将次新的一个数据文件和snapshot文件scp到新加入的zk节点数据目录。
- 再次对处理后的zookeeper服务进行启动,已能够成功启动服务。
- zookeeper启动完成后,使用zkCli.sh命令行进入zk目录,ls查看之前的文件,/hbase所使用的目录均正常,数据未丢失。
- 恢复hdfs服务,使用CM界面对hdfs服务进行启动,启动成功。
- 恢复hbase服务,对hbase服务进行启动,启动成功。
- 使用hbaseshell命令行进入对hbase服务进行测试,发现异常报错regionsnotonline出现。
- 检查hbase-master日志,发现存在大量的reigonsonline信息。
- 登录CM界面和hbase-masterweb界面查看,发现hbase存在大量的regions还在transition状态,而且超过了水位线。
- 等待所有的reigons逐渐上线完成。
- 上线完成后,hbase服务恢复正常,查询已能够正常返回结果,但集群共计10874个regions,共计2个节点,一个节点超过了5000+regions,比正常水平的单节点维持800-1000regions的建议值高了5倍以上。
- 清理过期测试数据的方案,释放集群的regions数量,对2021年以前的所有表进行删除。
- 检查regions总数,集群总regions数量已经2264个了,平均单节点1100个左右,基本处于正常水平。
故障根因分析和优化建议
此次故障的根本原因为在进行相关写入测试时,有大量的预分区和数据写入,没有及时进行清理,时间久了导致hbase因负载过高而崩溃。为避免类似问题的再次发生,我们提出以下优化建议:
- 对hbase历史的数据进行清理,释放集群的regions数量,维持在较健康的水平。
- 测试人员在后续测试后,及时进行hbase表及数据的清理,避免多人大量数据写入导致hbase负载过高而崩溃。
- 建议测试环境的重要权限进行人员管控,避免误删除zookeeper实例或者其他实例的问题。
最后再次强调,处理hbase问题时应该综合考虑zookeeper和hdfs组件,避免单只看hbase组件导致问题无法解决。同时建议部署hbase集群时,将zookeeper组件作为hdfs和hbase组件依赖使用,不要用于其他业务数据的存储使用,避免zk的问题影响到整个hdfs和hbase集群。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6254.html
