hbase快速入门之---物理存储

Øtable 中的所有行都按照 row key 的字典序排列。
Ø table 在行的方向上分割为多个 Hregion



Øregion 按大小分割的,每个表一开始只有一个 region ,随着数据不断插入表, region 不断增大,当增大到一个阀值的时候, Hregion 就会等分会两个新的 Hregion 。当 table 中的行不断增多,就会有越来越多的 Hregion


ØHRegion 虽然是分布式存储的最小单元,但并不是存储的最小单元。
事实上, HRegion 由一个或者多个 Store 组成,每个 store 保存一个 columns family
每个 Strore 又由一个 memStore 0 至多个 StoreFile 组成。
如图: StoreFile HFile 格式保存在 HDFS 上。


ØHLog(WAL log)
WAL 意为 Write ahead log(http://en.wikipedia.org/wiki/Write-ahead_logging) ,类似 mysql 中的 binlog, 用来做灾难恢复只用, Hlog 记录数据的所有变更。在分布式系统环境中,无法避免系统出错或者宕机,一旦 HRegionServer 以外退出, MemStore 中的内存数据就会丢失,引入 HLog 就是防止这种情况
每个 Region Server 维护一个 Hlog, 而不是每个 Region 一个。这样不同 region( 来自不同 table) 的日志会混在一起,这样做的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数,因此可以提高对 table 的写性能。带来的麻烦是,如果一台 region server 下线,为了恢复其上的 region ,需要将 region server 上的 log 进行拆分,然后分发到其它 region server 上进行恢复。
每次用户操作写入 Memstore 的同时,也会写一份数据到 HLog 文件, HLog 文件定期会滚动出新,并删除旧的文件 ( 已持久化到 StoreFile 中的数据 ) 。当 HRegionServer 意外终止后, HMaster 会通过 Zookeeper 感知, HMaster 首先处理遗留的 HLog 文件,将不同 region log 数据拆分,分别放到相应 region 目录下,然后再将失效的 region 重新分配,领取到这些 region HRegionServer Load Region 的过程中,会发现有历史 HLog 需要处理,因此会 Replay HLog 中的数据到 MemStore 中,然后 flush StoreFiles, 完成数据恢复。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值