Hbase列属性详解

原文地址:

https://blog.csdn.net/qq_39532946/article/details/77266335

 

hbase(main):002:0> desc 'mytable'
COLUMN FAMILIES DESCRIPTION                                                                     
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'} 

1  blocksize:(BLOCKSIZE => '65536')

  数据块大小配置优化:   blocksize默认是64K  
  数据块越小,索引越大,占用内存也越大,   如果随机查询,比如某个表+某个ID方式,   如果是顺序scan扫描区间,那么设置大一点  否则保持默认值 

create "stu",{NAME => "cf",BLOCKSIZE =>"65536"}   ##设置stu cf列族块大小为64K

块大小是HBase的一个重要配置选项,默认块大小为64kb,默认单位是字节,采用这种细粒度,目的是块操作时更加有效加载和缓存数据。对于不同的业务数据,块大小的合理设置对读写性能有很大的影响。而对块大小的调整,主要取决于两点:

1. 用户平均读取数据的大小。理论上讲,如果用户平均读取数据的大小较小,建议将块大小设置较小,这样可以使得内存可以缓存更多block,读性能自然会更好。相反,建议将块大小设置较大。随着BlockSize的增大,系统随机读的吞吐量不断降低,延迟不断增大。对于以随机读为主的业务,可以适当调低BlockSize的大小,以获得更好的读性能。对于以scan为主的业务,可以适当增大BlockSize的大小,以获得更好的读性能。

可见,如果业务请求以Get请求为主,可以考虑将块大小设置较小;如果以Scan请求为主,可以将块大小调大;默认的64kb块大小是在Scan和Get之间取得的一个平衡。

2. 数据平均键值对规模。

 

2   数据块缓存的配置:   ( BLOCKCACHE => 'true')

数据块缓存的配置:

把数据放进读缓存,但工作负载却经常不能从中获得性能提升——例如,如果一张表或表里的列族只被顺序化扫描访问或者很少被访问,你不会介意Get或Scan花费时间是否有点儿长。在这种情况下,你可以选择关闭那些列族的缓存。如果你只是执行很多顺序化扫描,你会多次倒腾缓存,并且可能会滥用缓存把应该放进缓存获得性能提升的数据给排挤出去。如果关闭缓存,你不仅可以避免上述情况发生,而且可以让出更多缓存给其他表和同一表的其他列族使用。
数据块缓存默认是打开的。可以在新建表或者更改表时关闭它:

hbase(main):002:0> create 'mytable',
{NAME => 'cf1', BLOCKCACHE => 'false’}

 

3 激进缓存的配置:(IN_MEMORY=> 'false')

你可以选择一些列族,赋予它们在数据块缓存里有更高的优先级(LRU缓存)。如果你预期一个列族比另一个列族随机读更多,这个特性迟早用得上。这个配置也是在表实例化时设定:

hbase(main):002:0> create 'mytable',
{NAME => 'cf1', IN_MEMORY => 'true'}

一般表IN_MEMORY参数的默认值是false。而元数据表则为true。
 

4 布隆过滤器: (BLOOMFILTER = true > 'ROW' )

数据块索引提供了一个有效的方法,在访问一个特定的行时用来查找应该读取的HFile的数据块。但是它的效用是有限的。HFile数据块的默认大小是64KB,这个大小不能调整太多。


布隆过滤器也不是没有代价。存储这个额外的索引层次占用额外的空间。布隆过滤器随着它们的索引对象数据增长而增长,所以行级布隆过滤器比列标识符级布隆过滤器占用空间要少。当空间不是问题时,它们可以帮助你榨干系统的性能潜力。
你可以在列族上打开布隆过滤器,如下所示:

hbase(main):007:0> create 'mytable',
{NAME => 'colfam1', BLOOMFILTER => 'ROWCOL'}

BLOOMFILTER参数的默认值是行级布隆过滤器ROW。列标识符级布隆过滤器用ROWCOL打开。行级布隆过滤器在数据块里检查特定行键是否不存在,列标识符级布隆过滤器检查行和列标识符联合体是否不存在。ROWCOL布隆过滤器的开销高于ROW布隆过滤器。

 

5 TTL 生存时间,( TTL => 'FOREVER')

当数据记录一段时间想删除掉,是以s为单位的,设置一个时间 超过后会被设置为删除标记

生存时间配置:(TTL)
超过这个时间设置的就会在下一次大合并中被删除

create "stu",{NAME => "cf",TTL =>"18000"}

 

6 压缩:(COMPRESSION => 'NONE')

压缩可以节省空间,读写数据会增加CPU的使用率 LZO,SNAPPY,GZIP

create "stu",{NAME => "cf",COMPRESSION =>"GZIP"}

 

7 单元时间版本:(VERSIONS => '1')

 0.96版本之前默认是3个, 0.96以及之后版本是1, 要根据业务来划分,版本是历史记录,版本增多意味空间消耗。

create "stu",{NAME =>"cf",VERSIONS =>3}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HBase中,创建表时可以使用多个参数来定义表的属性和行为。下面是一些常见的HBase建表参数的详解: 1. 表的名称(NAME):表在HBase中的唯一标识符。 2. 列族(COLUMN FAMILIES):表中数据的逻辑组织单元,可以包含多个(Column)。列族在表创建时定义,之后不能修改。 3. 最大版本数(VERSIONS):指定每个单元格(Cell)最多保存的版本数,默认为1。当设置为1时,只保存最新版本。 4. 最小版本数(MIN_VERSIONS):指定每个单元格至少保存的版本数,默认为0。当设置为0时,只保存最新版本。 5. TTL(TIME TO LIVE):指定每个单元格的存活时间,以秒为单位。过期的单元格将被自动删除。 6. 块大小(BLOCK SIZE):HBase将表数据以块(Block)的形式存储在HDFS上。块大小是指每个块的大小,默认为64KB。 7. 压缩类型(COMPRESSION):指定表中数据的压缩算法。常用的算法有Gzip、Snappy等。 8. 数据复制(REPLICATION SCOPE):指定数据复制的范围。可以选择在集群内部复制或跨集群复制。 9. 分区器(SPLIT POLICY):HBase使用行键(Row Key)对数据进行分区和存储。分区器定义了如何将数据分布到不同的Region Server上。 10. 预分区(PRE-SPLIT):在创建表时,可以预先将表分成若干个区域(Region),提高并发性能和负载均衡能力。 以上是一些常见的HBase建表参数,具体使用时可以根据实际需求进行调整。还有其他一些高级参数可供选择,如缓存大小、写入策略等,根据具体情况选择合适的参数进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值