Memtable在哪里可以找到cassandra?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Memtable在哪里可以找到cassandra?相关的知识,希望对你有一定的参考价值。

在DataStax中提到,Cassandra中每个列族有一个memtable。

让我们假设我有一个2节点Cassandra集群,RF = 2。现在,如果其中一个节点出现故障,那么另一个节点就可以从中检索数据。但是有可能在我的集群node1中失败然后node2处理数据请求,并且在一段时间后node1启动并且node2失败然后它是处理请求的node1。

那么集群中的memtable位于何处?如果它在节点中,那么每个列族只有一个memtable的语句是不正确的。

答案

memtable是一种内存数据结构,可以为每个节点上的每个表保持打开或关闭。

memtables定期刷新到新的sstables,这些sstables与memtable for reads合并。 commitlog为memtable提供持久性,直到刷新为止。

在读取时,协调器作业将根据请求的一致性级别合并来自不同副本的数据。如果您的CL涵盖node1和node2,协调器将解析丢失的数据。当node1或node2关闭或者它们的突变被丢弃时,协调器会将突变存储在提示中,以便在它恢复时传递。如果所有失败,反熵修复将在运行时修复任何不一致。

另一答案

您应该查看Cassandra写入路径以获取更多详细信息。 memtable是基于单个CF的内存结构。当数据写入Cassandra时,它首先写入commitLog,然后写入memtable然后刷新到磁盘(sstable)

阅读更多HERE

以上是关于Memtable在哪里可以找到cassandra?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?

Cassandra 中的手动压缩

增长提交日志的问题

Cassandra 更新过程澄清

upsert 上的 Cassandra 架构

cassandra,hbase,kafka,elasticsearch redis 对比总结