我是hbase的新手,我发现hbase会将所有操作写入wal和memstore。问题1:我想知道为什么hbase需要wal?问题2:每次我放入或删除数据时,hbase都必须向wal写入数据,为什么不在其数据文件中操作它呢?
egdjgwm81#
如果regionserver崩溃,我们可以从wal恢复编辑,如果没有wal,则在刷新每个memstore并写入新的StoreFile之前,regionserver出现故障时可能会丢失数据。你可以在这里找到更多信息
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 进一步阅读请看我的答案
WAL
gr8qqesn3#
hbase有它的 own ACID semantics : http://hbase.apache.org/acid-semantics.html它需要一个wal,以便在regionserver出现故障时可以重放编辑。沃尔玛在提供耐久性保证方面起着重要的作用。wal是可选的。您可以在hbase写入期间禁用wal。如果禁用它,您将看到一些性能改进。但是,在某些集群故障/灾难场景中,可能会丢失一些数据。因此,这是一种权衡,取决于您的用例。
own ACID semantics
3条答案
按热度按时间egdjgwm81#
如果regionserver崩溃,我们可以从wal恢复编辑,如果没有wal,则在刷新每个memstore并写入新的StoreFile之前,regionserver出现故障时可能会丢失数据。你可以在这里找到更多信息
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
进一步阅读请看我的答案gr8qqesn3#
hbase有它的
own ACID semantics
: http://hbase.apache.org/acid-semantics.html它需要一个wal,以便在regionserver出现故障时可以重放编辑。沃尔玛在提供耐久性保证方面起着重要的作用。
wal是可选的。您可以在hbase写入期间禁用wal。如果禁用它,您将看到一些性能改进。但是,在某些集群故障/灾难场景中,可能会丢失一些数据。因此,这是一种权衡,取决于您的用例。