HBase数据管理/寻址机制以及行键设计

1、hbase对数据的管理机制

    1.1、hbase中的表很大---bigtable,都是分布式存储在集群的各个regionserver上
    1.2、分布式存储时,需要对表进行切分,首先是按行切分成若干个hregion
    1.3、表的每一个hregion都会被一个regionserver所管理
    1.4、每一个hregion随着插入数据的增多,一旦达到一个阈值,会被regionserver分裂成两个
    1.5、在一个hregion内部还会被按照列族切分成若干个store单元
    1.6、每一个store又会被切分成若干个store file(HFile)存储到hdfs文件系统中
    1.7、每一个store对象中会维护一个内存缓存 memstore,用户查询数据时首先会去memstore中进行命中
    1.8、客户端往表中插入数据,首先会在hlog日志中进行记录,然后定期进行flush合并

2、hbase寻址机制 

    文件:    

    .META.:记录表名、hregion起始行键(rowkey)、RS主机名等信息

    -ROOT-:记录.META.的region的起始行健等信息(位置信息记录在zookeepr中)

    寻址过程:client -> -ROOT- -> .META. -> RS ->region -> rowkey

    缓存机制:通过寻址过程找到rowkey后缓存到客户端本地,以便下次查询增快速度

3、行键设计技巧

    问题描述:在查询符合某种描述的用户时,例如:查出姓“张”的所有用户或者根据年龄范围查询,hbase不像一般的RDBMS可以随便建立索引(分布式建立二级索引不是很容易,非常复杂),无法对rowkey以外的字段建立索引

    行键设计:通过上面的问题引出做行键设计的必要,在做表设计时可以将需要经常过滤的关键字、重要的信息放在行键里面,例如:rk00001-zhang-18-beijing

    注意:

        行键支持64KB大小

        hbase自动对行键按字典排序,所以设计时尽量让连续数据排在一起,以便范围查询时可提高效率。

4、hbase二级索引

    4.1、用solr对hbase中的信息建立全文索引

    4.2、使用coprocessor机制

你可能感兴趣的:(hadoop,hbase)