/ 中存储网

HBase数据模型中的表和列分析

2014-08-20 13:09:28 来源:中存储网

表和列说明:
Row KeyTimestampColumn Family
URIParser
url=http://www.chinastor.com title=存储
host=chianstor.com
t1
r2t5url=http://www.chinastor.com content=中存储…
t4host=alibaba.com
?  Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
?  Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
?  Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
Table & Region
当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理:


-ROOT- && .META. Table
HBase中有两张特殊的Table,-ROOT-和.META.
?  .META.:记录了用户表的Region信息,.META.可以有多个regoin
?  -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
?  Zookeeper中记录了-ROOT-表的location


Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过client端会做cache缓存。
MapReduce on HBase
在HBase系统上运行批处理运算,最方便和实用的模型依然是MapReduce,如下图:


HBase Table和Region的关系,比较类似HDFS File和Block的关系,HBase提供了配套的TableInputFormat和TableOutputFormat API,可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink,对于MapReduce Job应用开发人员来说,基本不需要关注HBase系统自身的细节。