Hbase的基本架构(-)HRegion

HRegion是HBase中的基本存储单元,负责存储一部分行键(Row Key)对应的数据。HRegion内部由多个HStore组成,每个HStore存储一部分列族(Column Family)的数据。HRegion支持自动分区,即当HRegion的大小达到阈值时,会自动拆分成多个新的HRegion。

  • HBase中的一个表,刚创建时,只有一个HRegion,随着数据量递增,达到阈值20G时,等分成两个HRegion,分布在不同的HRegionServer结点上。
  • 阈值由属性hbase.hregion.max.filesize指定,默认10G

  • 一个HRegion由N个Store(HStore,N>=1)构成
  • 一个Store对应一个列族,有一个MemoryStore和多个StoreFile组成

MemStore是一个写缓存(In Memory Sorted Buffer),所有数据在写完WAL日志后,会写入MemStore中。
MemStore数据达到阈值,由MemStore根据一定的算法(LSM-TREE算法,这个算法的作用是将数据顺序写入磁盘,而不是随机写,减少磁头调度时间,从而提高写入性能)将数据Flush到底层的HDFS文件中(HFile)。
HFile(StoreFile) 用于存储HBase的数据(Cell/KeyValue)。在HFile中的数据是按RowKey、Column Family、Column排序,对于相同的Cell(即这三个值都一样),则按timestamp倒序排列(即最新的数据在最前面)

HBase数据库是怎样存储数据的

 HBase分布式数据库最重要的就是存储数据,下面,从四个方面详细介绍HBase的物理存储。

  1.HBase表的数据按照行键RowKey的字典序进行排列,并且切分多个HRegion存储,存储方式如图1所示。

  ​ 图1 Region在行方向上的存储

  2.每个Region存储的数据是有限的,如果当Region增大到一个阀值(128)时,会被等分切成两个新的Region,切分方式如图2所示。

  ​ 图2 HRegion的切分

  3.一个HRegion Server上可以存储多个Region,但是每个Region只能被分布到一个HRegion Server上,分布方式如图3所示。

  图3 HRegion的分布

  4.MemStore中存储的是用户写入的数据,一旦MemStore存储达到阈值时,里面存储的数据就会被刷新到新生成的StoreFile中(底层是HFile),该文件是以HFile的格式存储到HDFS上,具体如图4所示。

  ​ 图4 HBase表的存储

总结一下

Table在行的方向上分割为多个HRegion,HRegion是HBase中分布式存储和负载均衡的最小单元,即不同的HRegion可以分别在不同的HRegionServer上,但同一个HRegion是不会拆分到多个HRegionServer上的。HRegion按大小分割,每个表一般只有一个HRegion,随着数据不断插入表,HRegion不断增大,当HRegion的某个列簇达到一个阀值(默认256M)时就会分成两个新的HRegion。

①、在Hbase中,会将一个表从行键方向上进行切分,切分成1个或者多个HRegion

②、切分之后,每一个HRegion都会交给某一个HRegionServer来进行管理

③、一个表至少会包含一个HRegion,可以包含多个HRgion

④、在HBase中,行键是有序的,因此从行键方向上来进行切分,所以HRegion之间的数据是不交叉的

⑤、因为HRegionServer会交给HRegionServer来管理,并且HRegion之间的数据相互不交叉,所以保证请求不会集中于某一个节点上而是会分散到不同的节点上

⑥、随着运行时间的推移,HRegion管理的数据会不断增多,达到指定条件的时候,会自动进行分裂

⑦、每一个HRegion包含一个到多个HStore,HStore的数量有列族的数量来决定

⑧、每一个HStore都会包含1个memStore以及包含0到多个StoreFile/HFile

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值