在上一篇博文中,我们提到Master启动时会启动SplitLogManager, 并进行log分割。那么什么是log split, 为什么要进行log split呢?要回答这个问题,我们先来看一下HLog(也叫WAL)的格式,如下图:
HLog是每个Region server只有一份,一个region server上的所有region共用一个Hlog, hlog用来在系统异常down掉,MemStore中大量更新丢失时,对数据进行恢复。从上图中可以看出,对每个region的更新在hlog里不是连续的,而是分散在Hlog里的。Hlog中的每项更新都会记录该更新所属的region, HBase要通过在每个region上应用hlog中的更新来恢复数据,因此需要把hlog中的更新按照region分组,这一把hlog中更新日志分组的过程就称为log split(日志分割)。