Hbase 建表高级属性及表设计

本文详细介绍了Hbase建表的高级属性,包括BLOOMFILTER、VERSIONS、COMPRESSION、TTL等,并提供了如何修改和查看这些属性的方法。此外,还深入讨论了Hbase的表设计,特别是列簇设计和RowKey设计,强调了RowKey设计的长度原则、散列原则和唯一性原则,以及如何防止数据热点,如加盐、哈希、反转和时间戳反转等策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、建表高级属性

下面几个 shell 命令在 hbase 操作中可以起到很大的作用,且主要体现在建表的过程中,看下面几个 create 属性。

1.1、BLOOMFILTER(布隆过滤)

BLOOMFILTER 默认是 NONE 是否使用布隆过虑及使用何种方式,布隆过滤可以每列族单独启用。
使用 HColumnDescriptor.setBloomFilterType(NONE | ROW | ROWCOL) 对列族单独启用布隆。

Default = ROW 对行进行布隆过滤。
对 ROW,行键的哈希在每次插入行时将被添加到布隆。
对 ROWCOL,行键 + 列族 + 列族修饰的哈希将在每次插入行时添加到布隆。
使用方法:

create 'table',{BLOOMFILTER =>'ROW'}

作用:用布隆过滤可以节省读磁盘过程,可以有助于降低读取延迟。

1.2、VERSIONS(版本)

VERSIONS 默认是 1 这个参数的意思是数据保留 1 个 版本,如果我们认为我们的数据没有这么大的必要保留这么多,随时都在更新,而老版本的数据对我们毫无价值,那将此参数设为 1 能节约 2/3 的空间。
使用方法:

create 'table',{VERSIONS=>'2'}

附:MIN_VERSIONS => '0’是说在 compact 操作执行之后,至少要保留的版本。

1.3、COMPRESSION(压缩)

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(列簇数据存活时间戳)

TTL 默认是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值