我有一个3节点的Cassandra集群,复制因子为3。 这意味着所有数据都应该复制到所有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个节点上磁盘使用情况的图表:
我的问题是为什么这些尺寸变化如此之大?是压缩还没有同时进行吗?
答案 0 :(得分:3)
我想说几个因素可以在这里发挥作用。
如您所知,压缩不会同时运行,因此每个节点上SSTable的数量和内容会有所不同。
memtables也不会同时刷新到SSTables,所以从一开始,每个节点都会有一些不同的SSTable。
如果你对SSTables使用压缩,假设它们的内容有些不同,压缩数据节省的空间量会有所不同。
即使您使用的复制因子为3,我认为非主要范围数据的存储空间与主要范围数据的存储空间略有不同,并且可能会映射更多主要范围数据到一个节点或另一个节点。
所以基本上除非每个节点在完全相同的时间看到完全相同的消息序列,否则它们将不具有完全相同的数据大小。