Hbase 每一次对数据的修改都会写入到memorystore 中,写入成功后,Hbase 便会将这条记录写入到hlog中去。当memorystore满足一定的条件后,hregionserver 便会将memorystore flush到磁盘中,记录着这些memorystore的hlog便会被删除掉。当hbase regionserver正常运行时,hlog并不起到任何作用,但是当regionserver出现故障宕机时,未刷写到磁盘中的memorystore数据便会丢失,此时便可以通过hlog对丢失的数据进行数据恢复。hlog恢复数据的过程被称为log split。本文阐述了hlog的基本结构、生成过程以及log split 的方式。
一、hlog的基本结构
hlog是regionserver级别的,hlog由regionserver中的region共享,其分布如下图所示:
hlog 由一个个entry构成,HLogKey由sequenId、wirte time 、cluster ids、region name、table name 构成
二、hlog 生成过程
hlog 滚动:regionserver启动一个线程定期(由参数’hbase.regionserver.logroll.period’决定ÿ