HBase系列常见面试题汇总---HBase的MVCC多版本并发机制
MVCC(Multi Version Consistency Control),简单地说,是一种通过数据的多版本来解决读写一致性问题的解决方案。我们知道 HBase 是会保留多版本的数据的,每次写入都会产生一个新版本的数据,每次读取都会默认读最新版本的数据,那么 HBase 是在并发请求的场景下是怎么控制这些多版本的呢?下面是对HBase的MVCC多版本并发机制的具体介绍。
如图所示,LinkedList 每个元素里面有两个属性:
writeNumber:即 Region 级别的事务 ID,每个客户端请求都会分配一个事务 ID。
completed: 数据写入是否完成,初始状态为 Flase,数据写入成功后会更新为 True。
客户端写入事务请求到达 Region,先写入到 LinkedList 中,10 是当前事务的 ID,False 表示当前事务还在进行中,数据还不可读。
Client 将数据写入 memstore 和 WAL ,写入完成即可结束事务。
将 completed 更新为 true,表示事务结束。
同时,Client 会按顺序遍历 LinkedList 里的元素,若 completed:true 则将 readPoint 更新到这个位置,说明此处的数据是可读的,遍历到 completed:false 则停止。
此时数据写入还不会返回成功,即事务 10 还是不可读的状态,因为需要保证时序,client2 和 3 还在写事务 7 和 9 没有完成,当前可读的数据只到事务 6 的位置。等到 client2 和 3 完成事务并将 readPoint 更新到 10,则事务 10 返回写入成功,数据可读。
更多关于大数据培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。
注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!