1. 存储
1.1. 压缩
hbase默认不使用压缩进行存储,一般情况下,hbase是以大表的方式存在,如果不进行压缩的话,势必会造成空间的浪费。而且由于hbase是对随机访问进行优化的,所以需要采用压缩解压效率较高的算法。
压缩比大的算法但速度慢的算法,比如gzip,不太适合。推荐使用LZO和SNAPY压缩,以损失部分空间换取较高的响应速度。
1.2. 块大小
hbase块大小指定。默认值为64M,这个值和hadoop的块大小不太一样,hadoop的块大小是在文件存储时生效,hbase的块大小是指memstore一次性写入filestore的大小或者由filestore一次性读入memstore的大小。
对于数据读写比较频繁的表,需要适当调大hbase blocksize,可以减少大量的磁盘IO操作,同时提高读写效率。
1.3 布隆过滤器(bloomfilter)
指定布隆过滤器理论上可以提高读写速度,但会损失一定的存储空间用来保存索引。
2. 参数配置
2.1. 正确设置Scan Caching的行数
含义:Caching是Server端一次返回数据的行数,默认值是100,意即一次RPC请求中,Server端获取到100行数据后一次性返回;
影响:
若Caching值设置过大,RegionServer需要在内存中存储所有需要返回的结果,可能导致OutOfMemory;
若Caching值设置过大,Server获取这些数据需要很长时间(尤其是设置了过滤器),可能导致OutOfOrderSca