hbase问题及优化
问题现象:效率低,造成前端文件积压
造成SDFS向hbase集群写文件效率低,发生积压的主要原因为以下:
1. Hbase regionserver服务JVM 堆内存新生代和老生代的使用率较高,GC次数频繁(服务启动至今发生过3W多次)及GC时间较长。
2. 目前每个节点平均700多个region,当前regionserver堆内存配置较小(老生代12Gb,新生代1Gb),在频繁写的场景下,导致发生了大量的memstore flush操作(日志中大量 global memstore flush),进而触发了大量的storeFile compaction操作(Compaction Queue Size 指标很高)。
处理方案(wangzy_ac_rdc_shanxi):
详见附件
优化hbase集群以下参数:
1. Memstore flush参数优化:
hbase.regionserver.global.memstore.upperLimit
RegionServer进程block进行flush触发条件:该节点上所有region的memstore之和达到upperLimit*heapsize,对于频繁写的应用,建议调大该值
当前配置:0.4
推荐配置:0.45
hbase.regionserver.global.memstore.lowerLimit
RegionServer进程触发flush的一个条件:该节点上所有region的memstore之和达到lowerLimit*heapsize,对于频繁写的应用,建议调大该值
当前配置:0.35
推荐配置:0.4
2. Compaction参数优化:
hbase.hstore.blockingStoreFiles(一个Store下的StoreFile文件数据大于该值时,则在flush memstore前先进行split或Compaction同时阻塞flush操作,可调高该值避免flush延迟)
当前配置:12
推荐配置:30
hbase.hstore.compaction.min.size(一个store下小于该大小的文件会加入到合并的队列)
配置与memstore flush的大小一致,减少发生compaction操作
当前配置:536870912
推荐配置:268435456
3. Hbase RegionServer堆内存参数优化
当前配置:
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -server -Xmx12288m -Xms12288m -Xmn1024m -XX:SurvivorRatio=1 -XX:+UseParNewGC
推荐配置:
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -server -Xmx32768m -Xms32768m -Xmn2048m -XX:SurvivorRatio=1 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:-DisableExplicitGC"