HBase - WAL 和 MemStore 有什么区别?
HBase - What's the difference between WAL and MemStore?
我正在尝试了解 HBase
体系结构。我可以看到两个不同的术语用于同一目的。
Write Ahead Logs
和Memstore
,都是用来存储还没有持久化到permanent storage
.
的新数据
WAL
和 MemStore 有什么区别?
更新:
WAL - 用于在服务器崩溃时恢复尚未持久化的数据。
MemStore - 将更新存储在内存中作为排序键值。
在写入磁盘之前,似乎有很多重复数据。
WAL
用于恢复而非数据复制。(further see my answer here)
请通过以下内容了解更多...
一个 Hbase Store 托管一个 MemStore 和 0 个或多个 StoreFiles (HFiles)。 Store 对应于给定区域的 table 的列族。
Write Ahead Log (WAL
) 记录了 HBase 中数据的所有更改,以文件为基础的存储。如果 RegionServer 在刷新 MemStore 之前崩溃或变得不可用,WAL 确保可以重播对数据的更改。
每个 RegionServer 有一个 WAL
,RegionServer 必须串行写入 WAL,因为 HDFS 文件必须是顺序的。这导致 WAL 成为性能瓶颈。
WAL
可以禁用以改善性能瓶颈。
这是通过调用 Hbase 客户端字段
来完成的
Mutation.writeToWAL(false)
一般注意事项:一般做法是,在进行批量加载数据时,禁用 WAL
以获得速度。但副作用是如果你禁用 WAL
如果内存崩溃,你将无法取回数据重播。
此外,如果您使用 solr+ HBASE + LILY,即 LILY Morphiline NRT 索引与 hbase,那么它将在 WAL
上工作,如果您出于性能原因禁用 WAL
,那么 Solr NRT
索引不会工作。因为 Lily 在 WAL
.
工作
我正在尝试了解 HBase
体系结构。我可以看到两个不同的术语用于同一目的。
Write Ahead Logs
和Memstore
,都是用来存储还没有持久化到permanent storage
.
WAL
和 MemStore 有什么区别?
更新:
WAL - 用于在服务器崩溃时恢复尚未持久化的数据。 MemStore - 将更新存储在内存中作为排序键值。
在写入磁盘之前,似乎有很多重复数据。
WAL
用于恢复而非数据复制。(further see my answer here)
请通过以下内容了解更多...
一个 Hbase Store 托管一个 MemStore 和 0 个或多个 StoreFiles (HFiles)。 Store 对应于给定区域的 table 的列族。
Write Ahead Log (
WAL
) 记录了 HBase 中数据的所有更改,以文件为基础的存储。如果 RegionServer 在刷新 MemStore 之前崩溃或变得不可用,WAL 确保可以重播对数据的更改。每个 RegionServer 有一个
WAL
,RegionServer 必须串行写入 WAL,因为 HDFS 文件必须是顺序的。这导致 WAL 成为性能瓶颈。
来完成的WAL
可以禁用以改善性能瓶颈。 这是通过调用 Hbase 客户端字段
Mutation.writeToWAL(false)
一般注意事项:一般做法是,在进行批量加载数据时,禁用 WAL
以获得速度。但副作用是如果你禁用 WAL
如果内存崩溃,你将无法取回数据重播。
此外,如果您使用 solr+ HBASE + LILY,即 LILY Morphiline NRT 索引与 hbase,那么它将在 WAL
上工作,如果您出于性能原因禁用 WAL
,那么 Solr NRT
索引不会工作。因为 Lily 在 WAL
.