2016-07-13 37 views
1

我有一个复制因子为3的3节点Cassandra群集。 这意味着所有数据都应该复制到所有3个节点上。为什么3节点集群上的负载与RF 3不同?

以下是nodetool状态输出:

-- Address  Load  Tokens  Owns (effective) Host ID        Rack 
UN 192.168.0.1 27.66 GB 256   100.0%   2e89198f-bc7d-4efd-bf62-9759fd1d4acc RAC1 
UN 192.168.0.2 28.77 GB 256   100.0%   db5fd62d-3381-42fa-84b5-7cb12f3f946b RAC1 
UN 192.168.0.3 27.08 GB 256   100.0%   1ffb4798-44d4-458b-a4a8-a8898e0152a2 RAC1 

这是磁盘使用情况随时间的节点的所有3个图表:

Cassandra disk usage over time

我的问题是为什么这些尺寸差异很大?压实不是在同一时间运行吗?

回答

3

我想说几个因素可以在这里发挥作用。

如您所述,压缩不会同时运行,因此每个节点上SSTables的数量和内容会有所不同。

这个memtables也不会同时被刷新到SSTables,所以从一开始,每个节点都会有不同的SSTables。

如果您对SSTables使用压缩,由于其内容有所不同,压缩数据所节省的空间量会有所不同。

即使您使用的复制因子为三,我会想象非主要范围数据的存储空间与主要范围数据的存储空间略有不同,并且可能会有更多主要范围数据存在映射到一个节点或另一个节点。

所以基本上除非每个节点完全在同一时间看到完全相同的消息序列,否则他们将不会有完全相同的数据大小。

相关问题