更新时间:2024-11-29 GMT+08:00

HBase过载调优

操作场景

当HBase业务突然出现峰值,短时间内大量请求发送到一个RegionServer/HMaster时,超过其可接受的范围,就会造成过载。过载会导致应用侧读写性能下降,HBase服务侧频繁GC,严重时会导致服务实例重启等。

当前HBase具有防过载能力,可以实现拒绝超大请求、保护内部请求、记录不合理请求等功能,减少过载场景下对HBase服务的影响,保障服务稳定性。

流量突增过载场景调优

当业务侧突然出现流量峰值,例如,请求量暴涨10倍等场景,可执行以下操作进行调整:

  1. 登录FusionInsight Manager,选择“集群 > 服务 > HBase > 图表”,在左侧图表分类中选择“Handler”,查看“RegionServer处理用户表请求的活跃的handler数-所有实例”是否长时间占满,如果占满需要单击“配置”,调整以下RegionServer参数:

    表1 RegionServer handler占满时参数调优

    参数名称

    参数描述

    调整策略

    hbase.regionserver.handler.count

    在RegionServer上启动的RPC侦听器实例数。

    调大此参数值,不建议超过1000。

    hbase.ipc.server.max.default.callqueue.size.ratio

    RegionServer队列普通请求最大占比,当队列中普通请求总大小超过此阈值时,会直接丢弃此请求。

    调整至0.8左右,限制外部请求占用队列比例,保护内部请求。

  2. 观察应用侧业务运行日志是否存在“XXX is too large for table XXX”或“Client scan caching XXX is too large for table XXX”,若存在,说明存在不合理请求,请检查对应请求,减小每次请求的数据量(Put/Delete调小批次请求数据量,Scan调小Caching值);如果业务侧业务暂时无法优化,可以在应用侧的“户端安装目录/HBase/hbase/conf/hbase-site.xml”文件中新增或修改以下参数(仅减少告警日志打印,不会缓解过载)。

    表2 减少告警日志打印

    参数名称

    参数描述

    调整策略

    hbase.rpc.rows.warning.threshold

    HBase客户端一次写入、更新或删除的数据条数阈值,超过此阈值时会记录日志。

    增大此参数的值。

    hbase.client.scanner.warning.threshold.scanning.ratio

    HBase客户端单个Scan的Caching过大时(默认为最大值的40%),超过此阈值时会记录日志。

    修改此参数值为“1.0”。

  3. 当客户业务侧发送过多超大请求会导致服务端处理慢,导致请求积压过载,当过大请求可以被认为是异常请求时,可以在Manager界面的HBase配置中调整RegionServer以下参数拒绝对应请求。

    表3 请求拒绝相关参数调整

    参数名称

    参数描述

    调整策略

    hbase.ipc.max.request.size

    RegionServer单个请求最大值,当接收到的请求超过此阈值时,会直接丢弃此请求。默认值为256MB。

    当应用侧多次重试失败,RegionServer侧日志中出现“RPC data length XXX of received from XXX is greater than max allowed”时,建议在应用侧减少一次发送的数据量,如果无法减少,可以调大此参数值,不建议超过1GB。

    hbase.server.keyvalue.maxsize

    RegionServer写入/更新操作单个Cell的最大值,超过此阈值时,将不允许写入。默认值为10MB。

    单个Cell过大会影响读写性能,同时过大也意味着可能存在异常数据,可以根据写入的数据评估数据范围,设置上限,如果无法评估,建议保持默认值。

    hbase.rpc.rows.size.threshold.reject

    RegionServer单个请求包含的数据操作条数超出阈值时,是否拒绝请求。

    同一个请求中如果存在一个节点的大量写入、更新、删除操作,即操作数量超过“hbase.rpc.rows.warning.threshold”参数值,会导致热点问题,性能下降。开启此配置可以拒绝不合理请求,当预分区不合理时,此参数可能导致拒绝过多请求,仅建议业务稳定时设置为“true”开启。

大批量Region上下线过载场景调优

当集群规模较大,Region数过多时,同时重启多个RegionServer,当涉及需要重新上线的Region数过多时(10w+),可能会导致HMaster过载,Region上线慢。

可在Manager界面的HBase配置中调整表4中的参数,提升HMaster处理高优先级请求的能力,减少HMaster过载。
表4 大批量Region上下线过载相关参数调优

实例名称

参数名称

参数描述

调整策略

HMaster

hbase.regionserver.metahandler.count

HMaster处理高优先级请求的Handler数量。

调大此Handler值,不建议超过1000。

hbase.ipc.server.metacallqueue.read.ratio

高优先级请求队列中读队列的比例,会影响meta读/写Handler的数量。

建议保持默认设置,默认值为“0.5”。

RegionServer

hbase.regionserver.msginterval

RegionServer与HMaster进行消息传输的时间间隔。

调大此参数可以减轻HMaster压力,建议设置为15s。