面对P0故障,如何优化HBase参数以稳定「在线业务」运行?

2026-05-22 14:030阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2596个文字,预计阅读时间需要11分钟。

面对P0故障,如何优化HBase参数以稳定「在线业务」运行?

1. 背景:由于多种原因,近期将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。+ 结果:在流量高峰期出现了宿主机故障,导致服务中断。

1.背景

由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。

结果在流量高峰期出现了宿主机故障,挂掉了两个core节点(部署了region server和datanode),大量region rit,花了15分钟才自动恢复,硬生生吃了一个P0故障。

复盘的时候发现,由于云上EMR对hdfs的socket超时参数默认设置了900000(15min),导致了region重新上线读取故障节点WAL日志的时候足足等待了15分钟才去重试下个节点。这样的自愈时间显然是不满足「在线业务」的需求的,需要将这个超时时间调整到60000(1min),实现快速自愈的目的。

因此,结合HBase自身组件特性与「在线业务」高可用、低抖动 诉求,全面整理了HBase参数调优的最佳实践。

2.先回顾下HBase基础架构

这里只是简单回顾下整体架构,方便对照各个组件聊一聊需要优化的参数。更详细内容可以参考我过去整理的《全面认识HBase架构(建议收藏)》

2.1 整体架构

从物理结构上,HBase包含了三种类型的server,zookeeper、HMaster、RegionServer,从而形成了一种主从模式的结构。

  • RegionServer主要用来服务读和写操作。当用户通过client访问数据时,client会和HBase RegionServer 进行直接通信。
阅读全文

本文共计2596个文字,预计阅读时间需要11分钟。

面对P0故障,如何优化HBase参数以稳定「在线业务」运行?

1. 背景:由于多种原因,近期将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。+ 结果:在流量高峰期出现了宿主机故障,导致服务中断。

1.背景

由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。

结果在流量高峰期出现了宿主机故障,挂掉了两个core节点(部署了region server和datanode),大量region rit,花了15分钟才自动恢复,硬生生吃了一个P0故障。

复盘的时候发现,由于云上EMR对hdfs的socket超时参数默认设置了900000(15min),导致了region重新上线读取故障节点WAL日志的时候足足等待了15分钟才去重试下个节点。这样的自愈时间显然是不满足「在线业务」的需求的,需要将这个超时时间调整到60000(1min),实现快速自愈的目的。

因此,结合HBase自身组件特性与「在线业务」高可用、低抖动 诉求,全面整理了HBase参数调优的最佳实践。

2.先回顾下HBase基础架构

这里只是简单回顾下整体架构,方便对照各个组件聊一聊需要优化的参数。更详细内容可以参考我过去整理的《全面认识HBase架构(建议收藏)》

2.1 整体架构

从物理结构上,HBase包含了三种类型的server,zookeeper、HMaster、RegionServer,从而形成了一种主从模式的结构。

  • RegionServer主要用来服务读和写操作。当用户通过client访问数据时,client会和HBase RegionServer 进行直接通信。
阅读全文