HBase - 列族定义 | 那伊抹微笑

博文作者: 妳那伊抹微笑
csdn 博客地址: http://blog.csdn.net/u012185296
itdog8 地址链接 : http://www.itdog8.com/thread-187-1-1.html
博文标题:HBase - 列族定义 | 那伊抹微笑
个性签名: 世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在
技术方向: Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术
转载声明: 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
qq交流群:214293307  云计算之嫣然伊笑(期待与你一起学习,共同进步)



1 列族定义
列族(Column Family)是一些列的集合。
一个列族的所有列成员有着相同的前缀。

下面是列族相关的配置属性,这些属性都有默认值,如果在创建表的时候不显示指定,则使用默认值。

1.1 可配置的数据块大小
HFile 数据块大小可以在列族层次设置。
这个数据块与 HDFS 数据块是不一样的概念,其默认值是 64kb = 65535 b。
数据块索引存储每个 HFile 数据块的起始键。
数据块大小的设置,影响数据块索引的大小。
数据块越小,索引越大,从而占用更大内存空间。同时加载进内存的数据块越小,随机查找性能更好。
但是,如果需要更好的序列扫描性能,那么一个能够加载更多 HFile 数据进入内存更为合理,这意味着应该将数据块设置为更大的值,
相应地,索引变小,将在随机读性能上付出更多的代价。
可以在表实例化时设置数据块大小 :
hbase(main):001:0> create 'mytable1', {NAME => 'cf1', BLOCKSIZE => '65535'}

1.2 数据块缓存
把数据块放进读缓存,并不是一定能够提升性能。
如果一个表或表的列族只被顺序化扫描访问或很少被访问,则 Get 或 Scan 操作话费时间长一点是可以接受的。 在这种情况下,可以选择关闭列族的缓存。
如果只是执行很多顺序化扫描,会多次使用缓存,并且可能会滥用缓存,从而把应该放进读缓存获得性能提升的数据给排挤出去。
如果关闭缓存,不仅可以避免上述情况发生,而且还可以让出更多珲春给其它表和同一表的其它列族使用。
数据块缓存模式是打开的。可以在新建表或更改表时关闭数据块缓存属性 : 
hbase(main):003:0> create 'mytable2', {NAME => 'cf1', BLOCKCACHE => 'false'}
属IN_MEMORY 参数的默认值是 false,该值表示 HBase 除了在数据块缓存中保存这个列族相比其它列族更激进外,并不提供其它额外保证。该参数在实际应用中设置为 true,此时访问性能不会变化太大(然而这样并没有什么卵用
hbase(main):003:0> create 'mytable3', {NAME => 'cf1', IN_MEMORY => 'true'} 

1.3 布隆过滤器

1.4 数据压缩
数据可以被压缩并存放在 HDFS 上,节省 I/O,但是读写数据时压缩和解压缩会提高 CPU 利用率。

HBase 可以使用多种压缩编码,包括 LZO、SNAPPY 和 GZIP。

在建表时可以在列族上打开压缩,代码如下 :
hbase(main):003:0> create 'mytable4', {NAME => 'cf1', COMPRESSION => 'SNAPPY'} 

1.5 单元时间版本
默认为 3,时间版本也是在列族级设置。
将 VERSIONS 参数设置为 1 : 
hbase(main):003:0> create 'mytable5', {NAME => 'cf1', VERSIONS=> 1}
在同一个建表语句里为列族指定多个属性 :  
hbase(main):003:0> create 'mytable5', {NAME => 'cf1', VERSIONS=> 1, TTL => '18000'} // 5 分钟 TTL
指定列族存储的最少时间版本数 : 
hbase(main):003:0> create 'mytable5', {NAME => 'cf1', VERSIONS=> 5, MIN_VERSIONS => '1'} 

1.6 生存时间
生存时间(Time to Live,TTL),用于设置单元格的生存周期,如果单元格过期,则会将其删除。
hbase(main):003:0> create 'mytable6', {NAME => 'cf1', TTL => '18000'}
过该命令在列族 cf1 上设置 TTL 为 18000s,也就是 5 小时。cf1 中超过 5 小时的数据将会在下一次大合并时被删除。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值