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

Put和Scan性能综合调优

操作场景

HBase有很多与读写性能相关的配置参数。读写请求负载不同的情况下,配置参数需要进行相应的调整,本章节旨在指导用户通过修改RegionServer配置参数进行读写性能调优。

操作步骤

  • JVM GC参数

    RegionServer GC_OPTS参数设置建议:

    • -Xms与-Xmx设置相同的值,需要根据实际情况设置,增大内存可以提高读写性能,可以参考参数“hfile.block.cache.size”(见表2)和参数“hbase.regionserver.global.memstore.size”(见表1)的介绍进行设置。
    • -XX:NewSize与-XX:MaxNewSize设置相同值,建议低负载场景下设置为“512M”,高负载场景下设置为“2048M”
    • -XX:CMSInitiatingOccupancyFraction建议设置为“100 * (hfile.block.cache.size + hbase.regionserver.global.memstore.size + 0.05)”,最大值不超过90。
    • -XX:MaxDirectMemorySize表示JVM使用的堆外内存,建议低负载情况下设置为“512M”,高负载情况下设置为“2048M”

      GC_OPTS参数中-XX:MaxDirectMemorySize默认没有配置,如需配置,用户可在GC_OPTS参数中自定义添加。

  • Put相关参数

    RegionServer处理put请求的数据,会将数据写入memstore和hlog,

    • 当memstore大小达到设置的“hbase.hregion.memstore.flush.size”参数值大小时,memstore就会刷新到HDFS生成HFile。
    • 当当前region的列簇的HFile数量达到“hbase.hstore.compaction.min”参数值时会触发compaction。
    • 当当前region的列簇HFile数达到“hbase.hstore.blockingStoreFiles”参数值时会阻塞memstore刷新生成HFile的操作,导致put请求阻塞。
    表1 Put相关参数

    参数

    描述

    默认值

    hbase.wal.hsync

    每一条wal是否持久化到硬盘。

    参考提升连续put场景性能

    true

    hbase.hfile.hsync

    hfile写是否立即持久化到硬盘。

    参考提升连续put场景性能

    true

    hbase.hregion.memstore.flush.size

    若MemStore的大小(单位:Byte)超过指定值,MemStore将被冲洗至磁盘。该参数值将被运行每个hbase.server.thread.wakefrequency的线程所检验。建议设置为HDFS块大小的整数倍,在内存足够put负载大情况下可以调整增大。

    134217728

    hbase.regionserver.global.memstore.size

    更新被锁定以及强制冲洗发生之前一个RegionServer上支持的所有MemStore的大小。建议设置为“hbase.hregion.memstore.flush.size * 写活跃region数 / RegionServer GC -Xmx”。默认值为“0.4”,表示使用RegionServer GC -Xmx的40%。

    0.4

    hbase.hstore.flusher.count

    memstore的flush线程数,在put高负载场景下可以适当调大。

    2

    hbase.regionserver.thread.compaction.small

    小压缩线程数,在put高负载情况下可以适当调大。

    10

    hbase.hstore.blockingStoreFiles

    若一个Store内的HStoreFile文件数量超过指定值,则针对此HRegion的更新将被锁定直到一个压缩完成或者base.hstore.blockingWaitTime被超过。每冲洗一次MemStore一个StoreFile文件被写入。在put高负载场景下可以适当调大。

    15

  • Scan相关参数
    表2 Scan相关参数

    参数

    描述

    默认值

    hbase.client.scanner.timeout.period

    客户端和RegionServer端参数,表示客户端执行scan的租约超时时间。建议设置为60000ms的整数倍,在读高负载情况下可以适当调大。单位:毫秒。

    60000

    hfile.block.cache.size

    数据缓存所占的RegionServer GC -Xmx百分比,在读高负载情况下可以适当调大以增大缓存命中率以提高性能。表示分配给HFile/StoreFile所使用的块缓存的最大heap(-Xmx setting)的百分比。

    当offheap关闭时,默认值为0.25,当offheap开启时,默认值是0.1。

  • Handler相关参数
    表3 Handler相关参数

    参数

    描述

    默认值

    hbase.regionserver.handler.count

    RegionServer上的RPC侦听器实例数,建议设置为200 ~ 400之间。

    200

    hbase.regionserver.metahandler.count

    RegionServer中处理优先请求的程序实例的数量,建议设置为200 ~ 400之间。

    200