HBASE完全架构

架构原理

20201222

10:00

 

基本架构中忽略了一个关键问题——IO效率如何保证?

效率问题,具体应该是这样。我们知道顺序IO是可以非常快的,但数据库若顺序写入——要知道,HBase中,以插入新值代替更新,那么就必然会造成硬盘上的数据是乱序的。

此时有两种常见的选择方案,这是两种通用的思想:

  • 乱序存储 + 索引,分布式环境,例如HDFS目录树本质上就是一个索引,但这种索引不能太复杂,对于数据库来说,索引需要复杂、并且经常维护
  • 排序 + 顺序存放,虽然排序是件很可怕的事,但综合下来,还是会带来更多好处

所以,为了效率考虑,hbase不会直接写入磁盘,它的策略如下:

  • 每个region会对应多个stroe,每个store都由内存上的mem store和硬盘上store file组成
  • 数据写入mem store 定期刷写到硬盘上成为store file文件
  • 我们知道,这种内存+定期写回的方式的缺点是内存易失性,不安全,所以这里添加了一个hlog,也叫Write-AHead-Log,WAL,记录操作日志,保存于IO

上述的有一些细节问题:

  • 正因为每个region都负责一定范围内的rowkey,并且有序,使得整体的维护成本变得很低——不需要复杂的归并
  • 按道理说,插入的每条信息和记录到log里面的信息应该差不多相当的信息量,为什么log写在硬盘就不怕效率问题?答案是,log可以顺序写入!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值