文章目录
1. 建表高级属性
下面几个 shell 命令在 HBase 操作中可以起到很到的作用,且主要体现在建表的过程中,看
下面几个 create 属性
1.1 BLOOMFILTER(布隆过滤器)
默认是 NONE
是否使用布隆过虑及使用何种方式,布隆过滤可以每列族单独启用,
使用 HColumnDescriptor.setBloomFilterType(NONE | ROW | ROWCOL) 对列族单独启用布隆
Default = ROW 对行进行布隆过滤
对 ROW,行键的哈希在每次插入行时将被添加到布隆
对 ROWCOL,行键 + 列族 + 列族修饰的哈希将在每次插入行时添加到布隆
使用方法: create 'table',{NAME => 'baseinfo' BLOOMFILTER => 'ROW'}
作用: 用布隆过滤可以节省读磁盘过程,可以有助于降低读取延迟
1.2 VERSIONS(版本号)
默认是 1, 这个参数的意思是数据保留 1 个 版本,
如果我们认为我们的数据没有必要保留这么多,随时都在更新,而老版本的数据对我们毫无价值,那将此参数设为 1 能
节约 2/3 的空间
使用方法: create 'table',{ NAME => 'baseinfo' VERSIONS=>'2'}
附: MIN_VERSIONS => '0'
是说在 compact 操作执行之后,至少要保留的版本,只有在设置了 TTL 的时候生效
1.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
1.4 TTL(Time To Live)
默认是 2147483647 即:Integer.MAX_VALUE 值大概是 68 年
这个参数是说明该列族数据的存活时间,单位是 s
这个参数可以根据具体的需求对数据设定存活时间,超过存过时间的数据将在表中不在显示,待下次 major compact 的时候再彻底删除数据
注意的是 TTL 设定之后 MIN_VERSIONS=>'0'