每个节点都有不同的memtables和SSTables,或者整个集群中是否有一定数量的这些表?并且,在写入操作中,首先将其写入提交日志,然后写入memtables和sstables。这是由节点完成的吗?如果没有,节点在写操作中的作用如下图所述? https://www.google.co.in/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0ahUKEwjEmYGCkovXAhXEMo8KHeLtD48QjRwIBw&url=https%3A%2F%2Fwww.guru99.com%2Fcassandra-architecture.html&psig=AOvVaw0rqVl6BG9vn0TefAPCEb5t&ust=1508999138916139
答案 0 :(得分:2)
每当您在Cassandra中创建表时,都会创建一个memtable。 因此节点可能有许多memtables。 触发刷新时会创建SStable。
请参阅此http://abiasforaction.net/apache-cassandra-memtable-flush/
对于另一个问题(写入路径)
操作由节点本身和协调者节点进行操作
无论何时插入数据,它都会进入memtable并在提交日志中追加。当节点出现故障时,将重播提交日志
因此,考虑到在新插入后您再次刷新数据,您将看到2套(生成)的SStables。现在您的分区数据存在于多个SStables中
请注意,SStables是不可变的。稍后您可能还想了解压实如何发生。
https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsConfigureCompaction.html
答案 1 :(得分:0)
每个节点都有自己的memtables和sstables。当然,可能有一个协调器节点会触发操作,读/写,但保存数据的节点是实际执行它的节点。
此外,群集是一组协同工作的节点,但没有协调所有内容的“群集”实体。
在上面提到的图片中,节点是一个红点,数据中心是节点1-4和5-8,所以我们必须到数据中心,所有这些都是同一个集群的一部分。
配置群集时需要注意一些重要事项:群集名称,分区程序和小故障。所有这些都需要对所有节点都相同。此外,在集群中,您将定义种子节点,但这些节点不需要对所有节点都相同,但最好是相同的。