设计HBase表需要注意的点

设计HBase表需要注意的点

 

1.如果有可能建议添加boomfilter,boomfilter可以进行 列族和行键的单独boomfilter,在写入的时候会把行键的hash写入到boomfilter中,这样大大减少了检索数据的时间

2.version可以控制数据的版本,假如老数据我们不关心,那么就设置为1,可以节约大约三分之二的空间

3.可以进行压缩推荐使用snappy压缩,如果是冷数据建议gzip压缩率更高,在snappy之前google默认的压缩是lzo,在snappy之后,snappy是默认的压缩格式

4.ttl可以给列族加上清除时间,如果version的最少保留是1个副本,那么会保留最新的1个版本,如果是0个,那么ttl时间到了之后,该列族下所有的数据将会被删除。

5.预分区 默认情况下 在创建Hbase表的时候会自动创建一个region分区,当导入数据的时候,所有客户端都向这一个region写数据,直到整个region足够大了才进行切分。一种可以加快批量写的方法是通过预先创建一个空的regions,这样当数据写入Hbase时,会按照region分区情况,在集群内做数据的负载均衡。在实际工作当中,创建表时一般都需要提前做预分区处理,一般来说每台服务器上面设置两个到五个的预分区,这么做可以更好地减少Split的过程,在设置预分区时,rowKey的设计尤为重要

6.列族的设计尽量一个并且只有一个字母

7.rowkey设计原则,长度原则不要超过16个字节。因为hbase是一个keyvalue键值数据库,那么如果长度太长的话,会影响hfile的存储,还有了memstore会存储在内存中。如果rowkey如果太大的话会导致内存利用率低,操作系统都是64位系统,内存8字节对齐,控制在16个字节,8的整数倍利用操作系统的最佳特性,rowkey的唯一原则,rowkey是按照字典顺序排序存储的,因此设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一起
 

猜你喜欢

转载自blog.csdn.net/hzp666/article/details/114974886