2015-09-19 178 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