Hbase行级事务模型

Hbase事务原子性保证

Hbase的数据首先会写入WAL,再写入Memstore。写入Memstore异常的话很容易实现回滚,因子只要保证WAL的原子性即可,每个事务只会产生一个WAL单元,这样就可以保证其原子性。

Hbase事务一致性保证

Hbase事务隔离性保证

写写并发控制

实现写写并发控制,只需要在写入或者更新之前先获取行锁,如果获取不到,就说明有其它的线程已经获得了该锁,就需要不断的重试等待或者自旋等待(自旋锁),直至其他线程释放该锁。拿到锁以后开始写数据,写完数据以后释放该行锁即可。

批量写写并发控制

一个线程同时更新一个Region中的多行记录,使用的方法是行锁,两阶段锁协议:

1.获取所有待写入或者更新行记录的行锁。

2.开始执行写入或者更新操作。

3.写入完成以后再同一释放所有行记录的行锁。

注:不能更新一行就是释放一个行锁,这样容易形成事务的死锁。

读写并发控制

当有两个事务更性同一行数据,当第二个事务更新到一半的时候过来一个读操作,读请求就会读到一个不一致的数据。Hbase采用的MVCC机制,主要分为两个步骤:

1.为每一个写入或者更新分配一个Region级别自增的序列号

2.为每一个读请求分配一个已完成的最大写事务系列号

Hbase事务持久性保证

Hbase事务持久性保证可以理解为WAL持久化。

你可能感兴趣的:(Hadoop)