Hbase的日志系统

一.HBase采用WAL预写日志,什么是WAL预写日志呢?

WAL: Write-Ahead Logging 预写日志系统是数据库中一种高效的日志算法,对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。
WAL主要应用于灾难恢复,记录了所有数据改动,一旦服务器崩溃,就可以将数据恢复到崩溃之前的状态。当对RegionServer写入数据的时候,如果写入WAL失败,则认为整个操作都失败了。


((RegionServer 写入数据流程)

二.WAL解决了什么问题?

  • 1.解决高可用HA(High Available)问题,当出现事故,可以恢复到之前的状态。
  • 2.实现远程备份(Replication)。一个写数据的请求,先会写log,再去写HRegion,然后将Log同步到远程机器上去。

三.HBase是通过那些模块实现WAL的呢?

  • 1.HLog:
    HLog是HBase实现WAL的类。
    一个RegionServer(一台服务器)包含唯一一个HLog实例,用于实现WAL(预写日志:数据库一种高效的日志算法)。保存在此处,宕机时,可以恢复。
    HLog Key:
    包含:Region、Table Name、 Sequence Number序列号、WriteTime写入时间戳。保存标识用户的信息。

(HLog Key 结构图)

  • 2.HLog Syncer:
    日志同步刷写类,在数据写入Region时,将暂时保存在内存中的数据刷写到日志中。

如何实现:通过定时刷写和内存溢值,两种方式实现。

(HLog Syncer结构图)

  • 3.HLog Roller:

Log的大小可以通过配置文件设置,默认是60分钟,即每隔60分钟,就打开一个新的日志文件写入日志。

HLog Roller 是一个后台线程,来实现以下两个功能:

  • 在特定时间去滚动日志,形成新的日志文件,避免单个日志文件过大。
  • 根据HLog序列化的Number,对比已经持久化的HFile序列号,删除旧日志。

    (HLog Roller结构图)

总结

本文介绍了HBase中的日志系统,搞清楚了HBase高可用性、备份、背后的实现原理,以及HBase是如何刷写日志的,通过哪几个存储模块的配合来完成日志的刷写的。
后续的文章中,将讲解下HBase中的日志合并。喜欢本文请收藏点赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值