强力推荐《Hbase 实现与原理》这本书。
snapshot不会拷贝数据,可以理解为它是原数据的一个指针。
我们知道Hbase数据文件一旦落到磁盘之后就不允许更新删除等原地修改操作。只能追加写入新的文件。。这种机制下实现某个表的snapshot只需要给当前表的所有文件分别新建一个引用(指针),其他新写入的数据重新创建一个新文件写入即可。如下图所示:
snapshot流程
snapshot流程主要涉及3个步骤:
-
加一把全局锁,此时不允许任何的数据写入更新以及删除
-
将Memstore中的缓存数据flush到文件中(可选)
-
为所有HFile文件分别新建引用指针,这些指针元数据就是snapshot