HBase - WAL和MemStore之间的区别是什么?

时间:2016-10-16 07:25:33

标签: hadoop architecture hbase hdfs

我正在尝试了解HBase架构。我可以看到两个不同的术语用于同一目的。

Write Ahead LogsMemstore都用于存储尚未保留到permanent storage的新数据。

WAL和MemStore之间的区别是什么?

更新

WAL - 用于在服务器崩溃时恢复尚未保留的数据。 MemStore - 将更新作为Sorted Keyvalue存储在内存中。

在将数据写入磁盘之前,似乎有很多重复数据。

1 个答案:

答案 0 :(得分:6)

WAL用于恢复,不用于数据复制。

请到下面了解更多...

  • Hbase商店托管一个MemStore和0个或更多StoreFiles(HFiles)。商店对应于给定地区的表的列族。

  • 预写日志(WAL)将对HBase中数据的所有更改记录到基于文件的存储。如果在刷新MemStore之前RegionServer崩溃或变得不可用,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 architecture section

enter image description here enter image description here