一、JVM调优
-Xms 初始堆大小
-Xmx 最大堆大小
-XX:ParallelGCThreads 并行收集器的线程数: 8+(logical processors-8)(5/8)
-XX:MaxGCPauseMillis 每次年轻代垃圾回收的最长时间(最大暂停时间):如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.
-XX:+ParallelRefProcEnabled 使用多线程并行处理
-XX:-ResizePLAB 取消内存整理
-XX:G1NewSizePercent 使得Eden空间保持1GB左右。 例如:
- 32GB heap,-XX:G1NewSizePercent=3
- 64GB heap, -XX:G1NewSizePercent=2
- 100GB heap以上,-XX:G1NewSizePercent=1
-XX:+UseG1GC
-Xms100g -Xmx100g
-XX:MaxGCPauseMillis=100
-XX:+ParallelRefProcEnabled
-XX:-ResizePLAB
-XX:ParallelGCThreads= 8+(40-8)(5/8)=28
-XX:G1NewSizePercent=1
二、hbase服务端参数
hbase.regionserver.handler.count
master, regionserver RPC监听数。默认30。
如果请求多且提交的数据量小的时候,可以考虑加大。
如果请求的数据量大,达到MB级的时候,可以考虑减少,以减轻region server的写入压力。
hbase.hregion.max.filesize
一个region的文件最大大小。如果超过这个大小,则自动split。
如果无需执行mr,应该禁止自动分割,修改值为100g,由人工执行split。
hbase.hregion.majorcompaction
major compact的自动周期。
应该设置为0禁止使用自动major_compact。
手工hbase shell执行脚本调用major_compact命令,或者使用java类org.apache.hadoop.hbase.client.HBaseAdmin的majorCompact方法。
在major compact时,关闭balance,避免RIT。
#hbase.hstore.compactionThreshold:HStore的storeFile数量>= compactionThreshold配置的值,则可能会进行compact,默认值为3,可以调大,比如设置为4,在定期的major compact中进行剩下文件的合并,减少合并的次数,不过后果是会影响查询的性能
hbase.hstore.blockingStoreFiles
在MemStore flush后