hbase列族高级配置
0 先看如下desc后的列族属性字段:
hbase(main):003:0> describe 'stu' Table stu is ENABLED stu COLUMN FAMILIES DESCRIPTION {NAME => 'base', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATIO N_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} 1 row(s) in 0.5000 seconds
1 blocksize:
数据块大小配置优化: blocksize默认是64K
数据块越小,索引越大,占用内存也越大, 如果随机查询,比如某个表+某个ID方式, 如果是顺序scan扫描区间,那么设置大一点 否则保持默认值
create "stu",{NAME => "cf",BLOCKSIZE =>"65536"} 设置stu cf列族块大小为64K,默认单位是字节,采用这种细粒度,目的是块操作时更加有效加载和缓存数据,
不依赖于hdfs块尺寸设计,仅仅是hbase内部的一个属性。
2 数据块缓存的配置: bloockcache
数据块缓存的配置:
如果经常顺序访问或很少被访问,可以关闭列族的缓存,列族缓存默认打开
create "stu",{NAME => "cf",BLOCKCACHE =>"false"}
3 激进缓存的配置:
可以选择一个列族赋予更高的优先级缓存, 激进缓存,表示优先级更高,IN_MEMORY默认是false
create "stu",{NAME => "cf",IN_MEMORY =>"true"}
4 布隆过滤器: BLOOMFILTER 开启时,会对数据产生一个标记,如果没有标记在去表里查数据, 反向测试(索引)有两种: 有 / 不知道, 会记录数据的信息,
布隆过滤器的配置:
减少硬盘读取数据带来的开销,对储存的数据块做反向测试,占用额外的空间
create "stu",{NAME => "cf",BLOOMFILTER =>"ROWCOL"}
5 TTL 生存时间,当数据记录一段时间想删除掉,是以s为单位的,设置一个时间 超过后会被设置为删除标记
生存时间配置:(TTL)
超过这个时间设置的就会在下一次大合并中被删除
create "stu",{NAME => "cf",TTL =>"18000"}
6 压缩:
压缩可以节省空间,读写数据会增加CPU的使用率 LZO,SNAPPY,GZIP
create "stu",{NAME => "cf",COMPRESSION =>"GZIP"}
7 单元时间版本: 0.96版本默认是3个, 0.98版本是1, 要根据业务来划分,版本是历史记录,版本增多意味空间消耗。
单元时间版本:
默认维护一个时间版本
create "stu",{NAME =>"cf",VERSIONS =>5}