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}