提升HBase Put和Scan性能综合调优
操作场景
HBase有很多与读写性能相关的配置参数。读写请求负载不同的情况下,配置参数需要进行相应的调整,本章节旨在指导用户通过修改RegionServer配置参数进行读写性能调优。
本章节适用于MRS 3.x及之后版本。
操作步骤
登录FusionInsight Manager界面,选择“集群 > 服务 > HBase > 配置”,配置以下相关参数以提升HBase数据读写性能调优。
- JVM GC参数
- -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是否持久化到硬盘。
true
hbase.hfile.hsync
hfile写是否立即持久化到硬盘。
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