hbase调优及优化的20种方式(上)

2020-05-22 00:00:00 数据 集群 多个 操作 请求

选择关闭AutoFlush

默认情况下,AutoFlush是开启的,当每次put操作的时候,都会提交到HBase server,大数据量put的时候会造成大量的网络IO,耗费性能在大数据量并发下,AutoFlush设置为false,并且将WriteBufferSize设置大一些(默认是2MB)(WriteBufferSize只有在AutoFlush为False情况下起作用)则需要通过调用HTable.setAutoFlushTo(false)方法可以将HBaseClient写客户端自动flush功能关闭,这样可以批量的将数据写入到HBase中,而不是一条put就执行一次更新!但是这样也有一个弊端,就是当出现故障的时候,比如宕机事故,缓冲区的数据还没有来得及flush落盘,则会丢失!


采用批量读写方式

建议使用List<put>来写入hbase数据而不是put。HBase通过Put操作来将RowKey信息写入数据,如果在并发度比较高的情况下,频繁的Put会造成网络IO,HBase提供了另一种put操作,可以调用HTable.put(List<Put>)可以批量的写入多条记录,这样就只有一次网络IO操作同样,HBase也提供一种可以批量读的方式,通过HTable.get(list)方式,可以根据给定的rowkey列表返回多个rowkey结果的集合,这样在通过list方式请求时,只会有一次网络IO,可以减少网络阻塞情况提供网络传输性能!

启用压缩

HBase创建表时要启用压缩,HBase支持的几种压缩算法分别为:GZIP、LZO、SNAPPY、Zippy.对于几种算法的比较1)GZIP的压缩率高,但它是CPU密集型的,对CPU的消耗较多,压缩和解压速度也慢;

2)LZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,其中解压速度快的更多;

3)Zippy/Snappy的压缩率低,而压缩和解压速度要稍微比LZO要快一些所以在通常情况下使用Snappy和Zippy压缩算法.启用压缩的两种方式:

一种是在创建表时指定压缩算法;另一种是创建表后指定压缩算法或者修改压缩算法。创建表时指定:

create 'test', {NAME => 'info', VERSIONS => 1, COMPRESSION => 'snappy'}

相关文章