hbase入库过程中,除了hbase-site.xml中的一些常见的配置参数,其实很关键的一个环节是hbase-env.sh中的jvm参数配置。之前修改的一个重要参数就是新生代的大小。
在大规模写入数据的试验中,我们分别将每个Regionserver的新生代内存配置为不同大小(总大小为32GB),入库一段时间后,通过jstat命令查看每台机器的三个运行状态,YGC,FGC,GCT,绘制出以下性能图形:(横轴为新生代内存配置大小,纵轴分别为三个参数的实际取值,GCT单位秒,YGC,FGC单位为次)

对于图中所显示的,yong gc次数随着新生代内存的增加显著下降,而fullGC也略为下降,总的GC时间在下降后又回升,4的位置达到最低点。
由于进行海里数据入库时,RegionServer端的内存只是作为memstore来缓存和组织数据,最终大部分的数据都还是要刷到硬盘上。所以就决定了这种场景下内存中的旧有对象需要被尽快释放。而新生代是最适合存放这些临时性对象,能够很快被minor gc回收。不过并不是新生代越大越好用,如果新生代过大,虽然gc的yong gc的频度下降,不过消耗的时间相应也上升。所以,依据试验中GCT最小的情况来选择一个合理的参数是比较适合的。
本文通过调整HBase的JVM参数,特别是新生代内存配置,实现在大规模数据写入过程中的性能优化。通过实验观察,发现合理配置新生代内存能有效减少垃圾回收次数和总回收时间,实现高效数据处理。
13万+

被折叠的 条评论
为什么被折叠?



