《HBase权威指南》读书笔记 第八章:架构,WAL预写日志

WAL预写日志

WAL的目的是为了容灾。一个Region Server会将本节点上所有的region的修改记录都记到同一个HLog文件中。当一次操作成功记录到WAL中时才会返回成功。这种机制保证了断电不会丢失数据。

当region打开时,HBase会读取每个HFile中的序列号。根据最大的序列号判断应该从HLog的哪个位置开始恢复数据。

HLogKey中包含了KeyValue以及region、表名、序列号、集群ID。

WALEdit中包含多个数据操作,将这些操作看成原子性事务。

LogSyncer负责异步刷写日志。默认配置下日志的实时刷写,任何操作都进行sync确保数据落盘。可以修改配置实现延迟刷写,可以提高性能,但可能停电时丢失数据。

HDFS的sync操作有两种模式,管道写和多路写。管道写要求所有的副本都写入成功才算sync完成,多路写sync则只要求主文件写入成功。第一种方式可靠性高,但延迟大。第二种方式速度快但可靠性不如前者。

LogRoller负责切分日志,避免单个日志文件过大。有两种方式触发切分日志,第一种是时间,默认1小时做切分,第二种是大小,默认达到32MB*95%做切分。任何一种方式达到阈值就会触发切分日志。

WAL回放

一个region server节点只有一个日志文件,这样做是为了性能,因为单个日志文件顺序写对于机械硬盘来说性能最好。

日志拆分。当master启动时,或者从备用master接管集群时,这个master节点就会检查.logs文件夹中的日志文件。由于文件名中包含服务器名称、启动码,所以可以判断当前日志文件是否正在使用。master节点还需要监听zk,如果发现服务节点挂了,那么master节点马上开始恢复日志

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值