HBase调优之五:分析opentsdb导致hbase整点GC很高问题

HBase gc优化第一版

对读写缓存进行了分离,使用了堆外内存,读缓存不再往内存中写。整体gc有了一定的提升,但还是会有整点尖峰情况。

查看HBase的读写请求,基本趋于稳定,所以整点的尖峰,猜测和调整HBase参数基本无关。

下面是读写分离之后,datanode-7上gc的情况。

1.png

线上OpenTsdb get/delete 请求情况

2.png

3.png

可以看到,它们都是整点的时候有一个小尖峰。

OpenTsdb整点在做compaction,会发出大量的get和delete请求。在整点时对HBase会有一定的冲击。

OpenTsdb官方提供了另一种写方式:append方式。

该方式的意图是:请求进来之后,不再创建新的列,而是追加在一个列上。这样也就不会再去做compaction操作。

Release环境调整后的现象

4.png

线下HBase GC调整前后对比

调整前:10号~11号

5.png

调整后:11号下午6点到12号

6.png

gc明显平稳了很多,但是也有一些小的波动,原因是:HBase被多个环境引用,比如pre-release环境。pre-release环境也会发出一些compaction。

新老数据查询不受影响。

7.png

8.png

参考文章:https://www.cnblogs.com/bigdatasafe/p/10524023.html

关闭Compaction和append

9.png

存储在HBase中,底层的StoreFile是多行,查询时,会增加IO,并且,多行存储,rowkey会重复,增加磁盘空间。

开启append模式后,查询情况:

10.png

减缓压缩速度

11.png

12.png

13.png