为什么hbase需要wal

hmae6n7t  于 2021-06-09  发布在  Hbase
关注(0)|答案(3)|浏览(435)

我是hbase的新手,我发现hbase会将所有操作写入wal和memstore。
问题1:我想知道为什么hbase需要wal?
问题2:每次我放入或删除数据时,hbase都必须向wal写入数据,为什么不在其数据文件中操作它呢?

egdjgwm8

egdjgwm81#

如果regionserver崩溃,我们可以从wal恢复编辑,如果没有wal,则在刷新每个memstore并写入新的StoreFile之前,regionserver出现故障时可能会丢失数据。你可以在这里找到更多信息

axr492tv

axr492tv2#

问题1)为什么hbase需要wal? WAL 用于恢复目的。让我们通过mapr docs近距离地了解hbase体系结构。
当客户端发出put请求时,第一步是将数据写入预写日志,wal:
编辑将附加到存储在磁盘上的wal文件的末尾。
wal用于在服务器崩溃时恢复尚未持久化的数据。

一旦数据被写入wal,它就会被放入memstore。然后,put请求确认返回给客户机。

q2)每次我放入或删除数据时,hbase都必须写入wal,为什么不在其数据文件中操作它呢?
如果 WAL 已启用。。对
如果 WAL 如果禁用,则可以通过删除写入的额外开销来直接对文件进行操作 WAL .
注:
一般情况 WAL 出于突变(行级突变)/写入性能目的将被禁用。如果你这样做的话,潜在的警告是,不要收回。。。意味着数据丢失。如果您使用的是solr,那么 WAL 因此solr文档不会被更新。如果你没有这种情况,你可以继续禁用 WAL 进一步阅读请看我的答案

gr8qqesn

gr8qqesn3#

hbase有它的 own ACID semantics : http://hbase.apache.org/acid-semantics.html
它需要一个wal,以便在regionserver出现故障时可以重放编辑。沃尔玛在提供耐久性保证方面起着重要的作用。
wal是可选的。您可以在hbase写入期间禁用wal。如果禁用它,您将看到一些性能改进。但是,在某些集群故障/灾难场景中,可能会丢失一些数据。因此,这是一种权衡,取决于您的用例。

相关问题