1、BLOOMFILTER 默认是NONE 是否使用布隆过虑及使用何种方式
布隆过滤可以每列族单独启用。
使用 HColumnDescriptor.setBloomFilterType(NONE | ROW | ROWCOL) 对列族单独启用布隆。
- Default = ROW 对行进行布隆过滤。
- 对 ROW,行键的哈希在每次插入行时将被添加到布隆。
- 对 ROWCOL,行键 + 列族 + 列族修饰的哈希将在每次插入行时添加到布隆
使用方法: create ‘table’,{BLOOMFILTER =>’ROW’}
启用布隆过滤可以节省读磁盘过程,可以有助于降低读取延迟
2、VERSIONS 默认是1 这个参数的意思是数据保留1个 版本,如果我们认为我们的数据没有这么大的必要保留这么多,随时都在更新,而老版本的数据对我们毫无价值,那将此参数设为1 能节约2/3的空间
使用方法: create ‘table’,{VERSIONS=>’2’}
附:MIN_VERSIONS => ‘0’是说在compact操作执行之后,至少要保留的版本
3、COMPRESSION 默认值是NONE 即不使用压缩
这个参数意思是该列族是否采用压缩,采用什么压缩算法
使用方法: create ‘table’,{NAME=>’info’,COMPRESSION=>’SNAPPY’}
建议采用SNAPPY压缩算法
HBase中,在Snappy发布之前(Google 2011年对外发布Snappy),采用的LZO算法,目标是达到尽可能快的压缩和解压速度,同时减少对CPU的消耗;
在Snappy发布之后,建议采用Snappy算法(参考《HBase: The Definitive Guide》),具体可以根据实际情况对LZO和Snappy做过更详细的对比测试后再做选择。
Algorithm % remaining Encoding Decoding
GZIP 13.4% 21 MB/s 118 MB/s
LZO 20.5% 135 MB/s 410 MB/s
Zippy/Snappy 22.2% 172 MB/s 409 MB/s
如果建表之初没有压缩,后来想要加入压缩算法,可以通过alter修改schema