两个 Cassandra 节点,复制因子为 2,但使用的存储大小不同
Two Cassandra nodes with a replication factor of 2 yet different sizes in storage used
我们让 OpenNMS 将图形数据发送到我们的 Cassandra/Newts 集群,该集群由 2 个 Cassandra 节点组成。我已将键空间 "newts" 的复制因子设置为 2。
我同时启动节点并将它们放置一段时间,然后我在每个节点上 运行 "nodetool cfstats newts" 并且两个节点具有完全相同的写入计数。
但是如果我进入每个节点的数据目录“/db/newts”并且 运行 "du -h" 我可以看到以下内容:
- 已用节点 1 存储:36K
- 已用节点2存储:12M
如果我将复制因子设置为 2,它们的大小会有什么不同?我知道它们通过 "nodetool status" 连接到同一个集群,这两个节点都显示为 "UN" (Up/Normal).
在 Cassandra 中,数据不会直接写入硬盘,它位于:
Commit log >> Memtable >> SSTables
Here您可以找到有关数据写入方式的好文档。
你可以运行:
nodetool flush
这会将 memtables 刷新到 sstables。之后,您应该能够在两个节点上看到相同的 sstable 大小。
我们让 OpenNMS 将图形数据发送到我们的 Cassandra/Newts 集群,该集群由 2 个 Cassandra 节点组成。我已将键空间 "newts" 的复制因子设置为 2。
我同时启动节点并将它们放置一段时间,然后我在每个节点上 运行 "nodetool cfstats newts" 并且两个节点具有完全相同的写入计数。
但是如果我进入每个节点的数据目录“/db/newts”并且 运行 "du -h" 我可以看到以下内容:
- 已用节点 1 存储:36K
- 已用节点2存储:12M
如果我将复制因子设置为 2,它们的大小会有什么不同?我知道它们通过 "nodetool status" 连接到同一个集群,这两个节点都显示为 "UN" (Up/Normal).
在 Cassandra 中,数据不会直接写入硬盘,它位于:
Commit log >> Memtable >> SSTables
Here您可以找到有关数据写入方式的好文档。
你可以运行:
nodetool flush
这会将 memtables 刷新到 sstables。之后,您应该能够在两个节点上看到相同的 sstable 大小。