WAL: Write-Ahead Logging 预写日志系统是数据库中一种高效的日志算法,对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。 WAL主要应用于灾难恢复,记录了所有数据改动,一旦服务器崩溃,就可以将数据恢复到崩溃之前的状态。当对RegionServer写入数据的时候,如果写入WAL失败,则认为整个操作都失败了。
((RegionServer 写入数据流程)
如何实现:通过定时刷写和内存溢值,两种方式实现。
(HLog Syncer结构图) 3.HLog Roller:Log的大小可以通过配置文件设置,默认是60分钟,即每隔60分钟,就打开一个新的日志文件写入日志。
HLog Roller 是一个后台线程,来实现以下两个功能:
在特定时间去滚动日志,形成新的日志文件,避免单个日志文件过大。根据HLog序列化的Number,对比已经持久化的HFile序列号,删除旧日志。 (HLog Roller结构图)本文介绍了HBase中的日志系统,搞清楚了HBase高可用性、备份、背后的实现原理,以及HBase是如何刷写日志的,通过哪几个存储模块的配合来完成日志的刷写的。 后续的文章中,将讲解下HBase中的日志合并。喜欢本文请收藏点赞。