Changes between Version 5 and Version 6 of hbase_table_design


Ignore:
Timestamp:
09/14/2012 10:19:08 AM (14 years ago)
Author:
liaojiaohe
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • hbase_table_design

    v5 v6  
    99      (3)inmemory:表在内存中存放,同时磁盘上也会存放,可以提高访问速度,可以设置到某个CF,HBASE并不保证数据都在内存。[[BR]] 
    1010 
    11       (4)[http://blog.csdn.net/jiaomeng/article/details/1495500 bloomfilter]:开启可以提升Get和exist的速度,根据应用来定,看需要精确到rowkey还是column。不过这里需要理解一下原理,bloomfilter的作用是对一个region下查找记录所在的hfile有用。即如果一个region下的hfile数量很多,bloomfilter的作用越明显。适合那种compaction赶不上flush速度的应用,单这种应用在我们这里比较少见。如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock;MetaBlock与DataBlock(真实的KeyValue数据)一起由LRUBlockCache维护。所以,开启bloomfilter会有一定的存储及内存cache开销[[BR]] 
     11      (4)[http://blog.csdn.net/jiaomeng/article/details/1495500 bloomfilter]:开启可以提升Get和Exist的速度,根据应用来定,看需要精确到rowkey还是column。不过这里需要理解一下原理,bloomfilter的作用是对一个region下查找记录所在的hfile有用。即如果一个region下的hfile数量很多,bloomfilter的作用越明显。适合那种compaction赶不上flush速度的应用,单这种应用在我们这里比较少见。如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock;MetaBlock与DataBlock(真实的KeyValue数据)一起由LRUBlockCache维护。所以,开启bloomfilter会有一定的存储及内存cache开销[[BR]] 
    1212 
    1313  
     
    1717       rowkey是hbase的key-value存储中的key,通常使用用户要查询的字段作为rowkey,查询结果作为value。可以通过设计满足几种不同的查询需求。[[BR]] 
    1818 
    19       (1)数字rowkey的从大到小排序:原生hbase只支持从小到大的排序,这样就对于排行榜一类的查询需求很尴尬。那么采用rowkey = Integer.MAX_VALUE-rowkey的方式将rowkey进行转换,最大的变最小,最小的变最大。在应用层再转回来即可完成排序需求。[[BR]] 
     19      (1)数字rowkey的从大到小排序:原生hbase只支持从小到大的排序(这里是指scanner的next方法),这样就对于排行榜一类的查询需求很尴尬。那么采用rowkey = Integer.MAX_VALUE-rowkey的方式将rowkey进行转换,最大的变最小,最小的变最大。在应用层再转回来即可完成排序需求。[[BR]] 
    2020 
    2121      (2)rowkey的散列原则:如果rowkey是类似时间戳的方式递增的生成,建议不要使用正序直接写入rowkey,而是采用reverse的方式反转rowkey,使得rowkey大致均衡分布,这样设计有个好处是能将regionserver的负载均衡,否则容易产生所有新数据都在一个regionserver上堆积的现象,这一点还可以结合table的预切分一起设计。[[BR]]