HBase写入性能调优

/ 1评 / 0

优化指定客户机群的单台HBase节点的稳定写入速度至不少于9.4MB/s。

(1)关掉HLog

(2)加大JVM内存>=90GB

(3)使用mapreduce批量写入(4)调大写缓存,调小读缓存

(5)使用批量写

(6)autoflush设置

(7)延迟日志flush

(8)增大regionserver handler数量

HBase服务端调优

GC_OPTS

HBase是利用内存完成读写操作。提高HBase内存可以有效提高HBase性能。GC_OPTS主要需要调整HeapSize和NewSize的大小。调整HeapSize大小的时候,建议将Xms和Xmx设置成相同的值,这样可以避免JVM动态调整HeapSize大小的时候影响性能。调整NewSize大小的时候,建议把其设置为HeapSize大小的1/9。

当HBase集群规模越大,Region数量越多时,可以适当调大HMaster的GC_OPTS参数

RegionServer需要比HMaster更大的内存,在内存充足的情况下,HeapSize可以相对设置大一些。

HMaster的HeapSize为4G的时候,HBase集群可以支持100000个Region的规模。根据经验值,单个RegionServer的HeapSize不建议超过20GB。

RegionServer并发请求处理数量

hbase.regionserver.handler.count表示RegionServer在同一时刻能够并发处理多少请求。如果设置过高会导致激烈的线程竞争,如果设置过小,请求将会在RegionServer长时间等待,降低处理能力。应该根据资源情况,适当增加处理线程数。

建议根据CPU的使用情况,可以设置为100至300之间的值。

控制MemStore的大小

hbase.hregion.memstore.flush.size默认值128M,单位字节,一旦有MemStore超过该值将被flush,如果regionserver的jvm内存比较充足(16G以上),可以调整为256M。在内存足够put负载大情况下可以调整增大。

BlockCache优化

BlockCache作为读缓存,合理设置对于提高读性能非常重要。默认情况下,BlockCache和MemStore的配置各占40%,可以根据集群业务进行修正,比如读多写少业务可以将BlockCache占比调大。另外BlockCache的策略也很重要,不同策略对读性能来说影响并不大,但是对GC的影响 却很显著。

HBase缓存区大小,主要影响查询性能。根据查询模式以及查询记录分布情况来决定缓存区的大小。如果采用随机查询使得缓存区的命中率较低,可以适当降低缓存大小。

控制HFile个数

MemStore在flush之前,会进行StoreFile的文件数量校验(通过hbase.hstore.blockingStoreFiles参数配置),如果大于设定值,系统将会强制执行Compaction操作进行文件合并,在合并的过程中会阻塞MemStore的数据写入,等待其他线程将StoreFile进行合并。通常情况下发生在数据写入很快的情况下。

hbase.hstore.compactionThreshold表示启动Compaction的最低阈值,该值不能太大,否则会积累太多文件,一般建议设置为5~8左右。

hbase.hstore.blockingStoreFiles默认设置为7,可以适当调大一些。

Split优化

hbase.hregion.max.filesize表示HBase中Region的文件总大小的最大值。当Region中的文件大于该参数时,将会导致Region分裂。

Compaction优化

hbase.hstore.compaction.min当一个Store中文件超过该值时,会进行Compaction,适当增大该值,可以减少文件被重复执行Compaction。但是如果过大,会导致Store中文件数过多而影响读取的性能。

hbase.hstore.compaction.max控制一次Compaction操作时的文件数据量的最大值。

hbase.hstore.compaction.max.size如果一个HFile文件的大小大于该值,那么在Minor Compaction操作中不会选择这个文件进行Compaction操作,除非进行Major Compaction操作。这个值可以防止较大的HFile参与Compaction操作。在禁止Major Compaction后,一个Store中可能存在几个HFile,而不会合并成为一个HFile,这样不会对数据读取造成太大的性能影响。

原则是:尽量要减小Compaction的次数和Compaction的执行时间

参考:https://zhuanlan.zhihu.com/p/70365703

一条回应:“HBase写入性能调优”

  1. iMJMJ说道:

    感谢老师分享

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注