`
韩悠悠
  • 浏览: 826876 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hbase学习笔记4-Hbase存储结构数据模型

 
阅读更多

 

HBase的存储分为TableregionstoreMemStoreStoreFileHFile。下面分别讲

 

 

 

 

 

TABLE

HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(Column family),一行由RowKey 时间戳,若干个列组成。除了rowkey和时间戳外,其他的列称为列族,他的命名有一定的规范。
rowKey
就像关系数据库的主键,用来检索记录。table中所有的记录按rowkey来排序,访问hbase表的记录有三种方式,分别是
1 通过单个row key访问
2
通过row keyrange
3
全表扫描

 

 

 

 

 

时间戳:用来区分同一份数据的版本。并且按顺序排序,每次查询都将返回最新版本的数据。

Region

table
region组成,刚开始table就一个region,随着table中的数据增大,到大到一定程度时,hbase会将region切分为两个相等大小的region region是分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上。相同的region不能拆分。

 

 

 

Store

region
是分布式的最小单元,单不是存储的最小单元,每一个region有一个或多个store组成,至少是一个storehbase会把一起访问的数据放在一个store里面,即为每个ColumnFamily建一个store,也说明一个store保存一个ColumnFamily。也说明如果有几个ColumnFamily,也就有几个Store。一个Store由一个memStore0或者多个StoreFile组成。

 

 

 

MemStore

memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStoreflush操作。

 

 

 

StoreFile

memStore内存中的数据写到文件后就是StoreFileStoreFile是一HFile的格式保存。

 

 

 

HFile

HFile
HBase的存储格式。是键值对的格式,键值对都是字节数组。HFile除了存储键值对,还需要存储键值对的索引信息,主要包含六个部分。

 

Data Block 段–保存表中的数据,这部分可以被压缩

 

Meta Block (可选的)–保存用户自定义的kv对,可以被压缩。

 

File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。

 

Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key

 

Meta Block Index (可选的)Meta Block的索引。

 

Trailer– 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取TrailerTrailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的keyDataBlock Index采用LRU机制淘汰。

 

HFileData BlockMeta Block通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics