HBase预写日志WAL机制

HBase的预写日志(WAL)用于灾难恢复,确保服务器崩溃时能通过重放日志恢复数据。操作先写入WAL,再放入MemStore,最后异步写入HFile。WAL类HLog负责日志写入,HLogKey记录归属信息,WALEdit封装修改操作。延迟同步写入WAL可提高性能,但可能导致数据丢失。LogRoller定时滚动日志,归档后在满足条件时删除。
摘要由CSDN通过智能技术生成

预写日志(Write-ahead log,WAL)
最重要的作用是灾难恢复,一旦服务器崩溃,通过重放log,我们可以恢复崩溃之前的数据。如果写入WAL失败,整个操作也将认为失败。

WAL

从上图看:
1 客户端对数据执行一个修改操作,如put(),delete(),incr()等。
2 每一个修改被封装到一个KeyValue对象实例,并通过RPC调用发送出来。
3 上述调用成批地发送给含有匹配region的HRegionServer。
4 数据先被写入到WAL,然后被放放到实际拥有记录的存储文件的MemStore中。
5 当MemStore达到一定的大小或经历一个特定时间之后,数据会异步地连续写入到文件系统中。

由于实际的日志存储在HDFS上,所以即使在服务器完全崩溃的情况下,WAL也能保证数据不会丢失。其他服务器可以打开日志文件然后回放这些修改。

为什么要一个RegionServer 对应于一个HLog。为什么不是一个region对应于一个log file?
引用BigTable中的一段话:
如果我们每一个“tablet”(对应于HBase的region)都提交一个日志文件,会需要并发写入大量的文件到GFS,这样,根据每个GFS
server所依赖的文件系统,写入不同的日志文件会造成大量的磁盘操作。
HBase依照这样的原则。在日志被回滚和安全删除之前,将会有大量的文件。如果改成一个regi

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值