HBase 的存储结构



2016-10-17 杜亦舒


HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢?


HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为 HRegion


hbase 海量数据存储 hbase的数据存储结构_hbase 海量数据存储



HBase 是集群结构,会把这些块儿分散存储到多个服务器中,每个服务器名为HRegionServer


hbase 海量数据存储 hbase的数据存储结构_大数据_02



服务器多了,就需要一个管理者 HMaster,负责 HRegion 的分配、HRegionServer 负载均衡的处理 等事务


hbase 海量数据存储 hbase的数据存储结构_服务器_03



当某个 HRegion 的大小达到阈值后,便会被分割开来,新的 HRegion 也会由 HMaster 进行分配,放置到合适的 HRegionServer 中


HRegion 是 HBase 中分布式存储的最小单元,但并不是存储的最小单元


HRegion 内部会按照列族进行切分,分为多个 Store,每个 Store 保存一个列族,所以 HRegion 由一个或者多个 Store 组成


hbase 海量数据存储 hbase的数据存储结构_服务器_04



每个 Strore 又由一个 MemStore 和 N个 StoreFile 组成


MemStore 是内存存储单元,当内存中数据达到阈值后,写入 StoreFile,StoreFile 以 HFile 格式保存


hbase 海量数据存储 hbase的数据存储结构_hbase 海量数据存储_05



HBase 数据的物理存储是基于 Hadoop 的分布式存储的


hbase 海量数据存储 hbase的数据存储结构_大数据_06



这样,综合起来便形成了 HBase 的整体架构图



hbase 海量数据存储 hbase的数据存储结构_分布式存储_07