我们都知道,hbase数据更新是存储到一个叫做memstore的内存区块,这样可以便于快速写入。当regionserver失效的适合,memstore里面的内容会丢失,因为没有被持久化到磁盘上。为了防止这种情况的数据丢失,更新操作放入memstore的时候被持久化到WAL中。这样可以依据WAL记录的内容对丢失的数据进行replay。
regionserver有多个region。其中的所有region共享同一个WAL文件,每个Edit保持有更新属于哪个region的信息及数据信息。当region被打开的时候,我们需要replay WAL中属于这个region的内容。所以WAL文件内容需要按照region进行分组便于replay。做这个事情的过程就叫做日志划分。
日志划分是由hmaster完成的,发生在集群启动或者regionserver死掉的情况下。由于需要保证一致性,受影响的region需要数据恢复完以后才可用。所以我们需要恢复和replay所有的edit,在region变得可用之前。
当日志划分开始后,日志目录被重命名为:
/
hbase
/
.
logs
/
&
lt
;
host
&
gt
;
,