- 设置 regionserver 的内存大小,默认为 1g,推荐设置为 4g。 修改 conf/hbase-env.sh 中的 HBASE_HEAPSIZE=4g
- hbase.regionserver.handler.count: 修改客户端并发线程数,默认为 10。 设置规则为,当 put 和 scans 操作比较的多的时候,将其设置为比较小的值;当 get 和 delete 操作比较多的时候,将其设置为比较大的值。原因是防止频繁 GC 操作导致内存异 常。
- 自定义 hbase 的分割和紧缩操作,默认情况下 hbase 的分割机制是当 region 大 小 达 到 hbase.hregion.max.filesize(10g) 的 时 候 进 行 自 动 分 割 , 推 荐 每 个 regionserver 的 region 个数在 20~500 个为最佳。hbase 的紧缩机制是 hbase 的一 个非常重要的管理机制,hbase 的紧缩操作是非常消耗内存和 cpu 的,所以一般机器压力 比较大的话,推荐将其关闭,改为手动控制。
- hbase.balancer.period: 设置 hbase 的负载均衡时间,默认为 300000(5 分钟),在负载比较高的集群上,将其值可以适当的改大。
- hfile.block.cache.size:修改 hflie 文件块在内存的占比,默认 0.4。在读应用比较多的系统中,可以适当的增大该值,在写应用比较多的系统中,可以适当的减少 该值,不过不推荐修改为 0。
- hbase.regionserver.global.memstore.upperLimit:修改 memstore 的内存占用比率上限,默认 0.4,当达到该值的时候,会进行 flush 操作将内容写的磁盘 中。
- hbase.regionserver.global.memstore.lowerLimit: 修改 memstore 的内存占用比率下限,默认 0.38,进行 flush 操作后,memstore 占用的内存比率必须 不大于该值。
- hbase.hregion.memstore.flush.size: 当 memstore 的值大于该值的时 候,进行 flush 操作。默认 134217728(128M)。
- hbase.hregion.memstore.block.multiplier: 修改 memstore 阻塞块大 小 比 率 值 , 默 认 为 4 。 也 就 是 说 在 memstore 的 大 小 超 过 4*hbase.hregion.memstore.flush.size 的时候就会触发写阻塞操作。最终可能会 导致出现 oom 异常。