HBase-WAL

作者: 飞向天王星星 | 来源:发表于2022-06-22 22:08 被阅读0次

为什么要把 WAL 加载到 MemStore中,再刷写成 HFile 呢?

WAL (Write-Ahead-Log) 预写日志是 HBase 的 RegionServer 在处理数据插入和删除过程中用来记录操作内容的一种日志。每次Put、Delete等一条记录时,首先将其数据写入到 RegionServer 对应的 HLog 文件中去。

而WAL是保存在HDFS上的持久化文件,数据到达 Region 时先写入 WAL,然后被加载到 MemStore 中。这样就算Region宕机了,操作没来得及执行持久化,也可以再重启的时候从 WAL 加载操作并执行。

那么,我们从写入流程中可以看出,数据进入 HFile 之前就已经被持久化到 WAL了,而 WAL 就是在 HDFS 上的,MemStore 是在内存中的,增加 MemStore 并不能提高写入性能,为什么还要从 WAL 加载到 MemStore中,再刷写成 HFile 呢?

数据需要顺序写入,但 HDFS 是不支持对数据进行修改的;

WAL 的持久化为了保证数据的安全性,是无序的;

Memstore在内存中维持数据按照row key顺序排列,从而顺序写入磁盘;

所以 MemStore 的意义在于维持数据按照RowKey的字典序排列,而不是做一个缓存提高写入效率。

相关文章

  • HBase-WAL

    为什么要把 WAL 加载到 MemStore中,再刷写成 HFile 呢? WAL (Write-Ahead-Lo...

网友评论

      本文标题:HBase-WAL

      本文链接:https://www.haomeiwen.com/subject/gtzuvrtx.html