Hbase-06-Snapshot原理_文件写入

强力推荐《Hbase 实现与原理》这本书。

snapshot不会拷贝数据,可以理解为它是原数据的一个指针。

我们知道Hbase数据文件一旦落到磁盘之后就不允许更新删除等原地修改操作。只能追加写入新的文件。。这种机制下实现某个表的snapshot只需要给当前表的所有文件分别新建一个引用(指针),其他新写入的数据重新创建一个新文件写入即可。如下图所示:

Hbase-06-Snapshot原理_文件写入_02

snapshot流程

snapshot流程主要涉及3个步骤:

  1. 加一把全局锁,此时不允许任何的数据写入更新以及删除

  2. 将Memstore中的缓存数据flush到文件中(可选)

  3. 为所有HFile文件分别新建引用指针,这些指针元数据就是snapshot

两阶段提交原理

Hbase-06-Snapshot原理_数据_03

Hbase-06-Snapshot原理_hbase_04

参考:
http://hbasefly.com/2017/09/17/hbase-snapshot/

不要小瞧女程序员