2015-09-19 119 views
0

我是Hbase的新手,我发现Hbase会将所有操作写入WAL和memstore。我想知道为什么Hbase需要WAL?每次我放入或删除数据时,Hbase都必须向WAL写入数据,为什么不在数据文件中操作?为什么Hbase需要WAL?

+2

与其他数据库相同的原因,耐用性。 WAL文件可以在中断的情况下重播。 –

+0

但是Hbase不支持ACID和事务。我认为它不存在耐久性 – modkzs

+2

行级突变是原子性的。 –

回答

0

HBase的已经是其own ACID semanticshttp://hbase.apache.org/acid-semantics.html

它需要一个WAL,以便它可以在RegionServer的失效的情况下重放编辑。 WAL扮演重要角色提供耐久性保证。

WAL是可选的。在HBase写入期间可以禁用WAL。如果它被禁用,你会看到一些性能改进。但是,可能会出现一些集群故障/灾难情况,您可能会丢失一些数据。所以,它的取舍取决于你的用例。

0

如果RegionServer crashesh没有WAL,那么我们可以从WAL中恢复编辑,在每个MemStore刷新并写入新的StoreFiles之前,RegionServer发生故障时可能会丢失数据。 你可以找到更多的信息here