我在努力理解 HBase 建筑。我可以看出两个不同的术语用于相同的目的。 Write Ahead Logs 以及 Memstore ,两者都用于存储尚未持久化到的新数据 permanent storage .两者有什么区别 WAL memstore呢?更新:wal—用于在服务器崩溃时恢复尚未持久化的数据。memstore-将更新作为排序键值存储在内存中。在将数据写入磁盘之前,似乎有很多重复的数据。
HBase
Write Ahead Logs
Memstore
permanent storage
WAL
iaqfqrcu1#
请通过下面了解更多。。。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架构部分
Mutation.writeToWAL(false)
NRT
1条答案
按热度按时间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
出于性能原因,那么solrNRT
索引不起作用。因为莉莉一直在工作WAL
.请看hbase架构部分