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

本文详细介绍了HBase的WAL预写日志机制,包括其容灾作用,如何确保数据不丢失,以及日志的同步与刷写策略。在WAL回放部分,阐述了日志拆分和恢复的过程,以及在异常情况下的处理策略,确保系统稳定运行。
摘要由CSDN通过智能技术生成

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节点马上开始恢复日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值