性能调优

最近更新时间: 2026-03-13 09:03:00

组件运行参数调优

服务配置文件参数推荐值默认值(仅参考)调优说明
HBasehbase-envHeapSize--1024堆内内存,但具体大小应根据硬件配置和工作负载来调整。
HBASE_REGIONSERVER_OFFHEAPSIZE---1(JVM参数默认值)堆外内存
JVM参数-XX:MaxDirectMemorySize的值
若出现java.lang.OutOfMemoryError: Direct buffer memory异常可以上调这个值。
hbase-sitehbase.regionserver.handler.count25630总的处理线程数,可以根据客户端的请求数进行调整,读写请求较多时,增加此值。
hbase.ipc.server.callqueue.handler.factor 0.10.1请求量大时,减少队列锁竞争。
建议保持默认值。
hbase.ipc.server.callqueue.typefifofifofifo类型时,可以使用fastpath,请求不进入队列,直接由handler处理。
建议保持默认值。
hbase.regionserver.memstore.classorg.apache.hadoop.hbase.regionserver.skiplist.hbase.CCSMapMemStoreorg.apache.hadoop.hbase.regionserver.DefaultMemStore开启CCSMapMemstore特性
hbase.regionserver.global.memstore.size0.40.4在RegionServer中,MemStoreFlusher线程负责执行flush操作。该线程会定期检查写操作内存的使用情况,当写操作占用的内存总量达到设定的阈值时,MemStoreFlusher将启动flush操作。它会按照从大到小的顺序,flush部分相对较大的memstore,直到所占用的内存量低于阈值。
建议保持默认值。
hbase.client.ipc.pool.size11客户端和某个RS的socket数量。
建议保持默认值。
hbase.hstore.compaction.throughput.lower.bound209715200
(200MB)
52428800(50MB)compaction速度最高上限设置,主要是方便验证时改表结构做major_compact快一些
hbase.hstore.compaction.throughput.higher.bound
524288000 (500MB)104857600(100MB)
HDFShdfs-sitedfs.client.read.shortcircuittruefalseHDFS的配置,短路读特性开启
dfs.client.read.shortcircuit.streams.cache.size256256short-circuit最多持有的文件描述符数量。
建议保持默认值。
dfs.client.hedged.read.threadpool.size00关掉hedged read,防止重复请求,资源浪费。
建议保持默认值。

表属性设置优化

设置方法 说明
alter 'usertable',{NAME=>'0',COMPRESSION => 'SNAPPY'}
major_compact 'usertable'
压缩,取值有NONE/SNAPPY
主要影响读性能,一般取SNAPPY较优
alter 'usertable',{NAME=>'0', DATA_BLOCK_ENCODING=>'ROW_INDEX_V1'}
major_compact 'usertable'
编码,取值有FAST_DIFF和ROW_INDEX_V1
主要影响读性能,一般取ROW_INDEX_V1较优
alter 'usertable',{NAME=>'0',IN_MEMORY => true, PREFETCH_BLOCKS_ON_OPEN =>true}
major_compact 'usertable'
如果L2缓存足够大,可以缓存下表所有内容,考虑修改表属性,在open的时候就缓存表数据到内存,避免需要提前预热,如需去除相关属性:

alter 'mock_table_prod',METHOD => 'table_att_unset', NAME => 'PREFETCH_BLOCKS_ON_OPEN'
alter 'usertable',{NAME=>'0', BLOCKSIZE => 16384}
major_compact 'usertable'
BLOCKSIZE默认值是64K,该参数一般值较小适用于get查询,较大适用于scan查询。
get场景可以设置为16K(16384),观察是否比默认值有增加