当 HMaster 发现某个 region server 故障 , HMaster 会将这个 region server 所管理的 regions 分配给其它健康的 region servers 。为了恢复故障的 region server 的 MemStore 中还未被持久化到 HFile 的数据 , HMaster 会将 WAL 分割成几个文件 , 将它们保存在新的 region server 上 。每个 region server 然后回放各自拿到的 WAL 碎片中的数据 , 来为它所分配到的新 region 建立 MemStore 。
文章插图
WAL 包含了一系列的修改操作 , 每个修改都表示一个 put 或者 delete 操作 。这些修改按照时间顺序依次写入 , 持久化时它们被依次写入 WAL 文件的尾部 。
当数据仍然在 MemStore 还未被持久化到 HFile 怎么办呢?WAL 文件会被回放 。操作的方法是读取 WAL 文件 , 排序并添加所有的修改记录到 MemStore , 最后 MemStore 会被刷写到 HFile 。
文章插图
点评:故障恢复是 HBase 可靠性保障的一个重要特性 。WAL 在这里扮演了关键角色 , 在分割 WAL 时 , 数据会根据 region 分配到对应的新的 region server 上 , 然后 region server 负责回放这一部分数据到 MemStore 中 。Apache HBase 架构的优点
- 强一致性:当 write 返回时 , 所有的 reader 都会读到同样的值 。
- 自动扩展性:数据变大时 region 会分裂 。使用 HDFS 存储备份数据 。
- 内置恢复功能:使用 Write Ahead Log (类似于文件系统中的日志)
- 与 Hadoop 结合:使用 MapReduce 处理 HBase 数据会非常直观 。
- WAL 回放很慢 。
- 故障恢复很慢 。
- Major Compaction 时候 I/O 会飙升 。
本文授权转载自:https://segmentfault.com/a/1190000019959411
【全网最细致的 HBase 内核解析】
推荐阅读
- 中国最大的黄鳝38斤 世界上最大的黄鳝有多重
- 一个进程开启多少线程最好
- 最实用的家庭储藏茶叶的方法
- 铁观音的最佳储存方法
- 一小时搭建微信聊天机器人
- 古希腊旧喜剧古典时期的喜剧最重要的作家是谁 古希腊三大喜剧家及其代表作
- 儿童疱疹性咽喉炎
- 梦见高考迟到但最终进了考场 梦见高考迟到是什么意思
- 去惠州罗浮山哪个寺庙最好 梅州灵光寺风景区
- 大红袍的最佳储存方法