hbase-wal和memstore有什么区别?

h43kikqp  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(539)

我在努力理解 HBase 建筑。我可以看出两个不同的术语用于相同的目的。 Write Ahead Logs 以及 Memstore ,两者都用于存储尚未持久化到的新数据 permanent storage .
两者有什么区别 WAL memstore呢?
更新:
wal—用于在服务器崩溃时恢复尚未持久化的数据。memstore-将更新作为排序键值存储在内存中。
在将数据写入磁盘之前,似乎有很多重复的数据。

iaqfqrcu

iaqfqrcu1#

wal是用于恢复的,而不是用于重复数据(请进一步参阅我的答案)

请通过下面了解更多。。。
hbase存储区承载一个memstore和0个或多个storefiles(hfiles)。存储区对应于给定区域的表的列族。
写前日志( WAL )将对hbase中数据的所有更改记录到基于文件的存储中。如果在刷新memstore之前regionserver崩溃或变得不可用,wal将确保可以重放对数据所做的更改。
用一个 WAL 对于每个regionserver,regionserver必须串行地写入wal,因为hdfs文件必须是连续的。这导致wal成为性能瓶颈。 WAL 可以禁用以改善性能瓶颈。这是通过调用hbase client字段来完成的 Mutation.writeToWAL(false) 一般说明:一般做法是,在进行批量加载数据时, WAL 无法获得速度。但副作用是如果你禁用 WAL 如果内存崩溃的话,你不能恢复数据重播。
如果您使用solr+hbase+lily,即lily morphiline nrt索引和hbase,那么它就可以工作了 WAL 如果你禁用 WAL 出于性能原因,那么solr NRT 索引不起作用。因为莉莉一直在工作 WAL .
请看hbase架构部分

相关问题