为什么具有 RF 3 的 3 节点集群上的负载不同?
Why is the load different on a 3 node cluster with RF 3?
我有一个复制因子为 3 的 3 节点 Cassandra 集群。
这意味着所有数据都应该复制到所有 3 个节点上。
nodetool status输出如下:
-- 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 个节点上随时间变化的磁盘使用情况图:
我的问题是为什么这些尺寸差异如此之大?难道compaction没有同时运行?
我想说有几个因素可以在这里发挥作用。
如您所见,压缩不会同时 运行,因此每个节点上的 SSTables 的数量和内容会有所不同。
memtables 也不会同时刷新到 SSTables,所以从一开始,每个节点都会有一些不同的 SSTables。
如果您对 SSTable 使用压缩,鉴于它们的内容有些不同,通过压缩数据节省的 space 量会有所不同。
即使您使用的复制因子为 3,我认为非主要范围数据的存储 space 与主要范围数据的存储 space 略有不同,并且很可能更多的主要范围数据被映射到一个节点或另一个节点。
所以基本上除非每个节点在完全相同的时间看到完全相同的消息序列,否则它们不会有完全相同的数据大小。
我有一个复制因子为 3 的 3 节点 Cassandra 集群。 这意味着所有数据都应该复制到所有 3 个节点上。
nodetool status输出如下:
-- 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 个节点上随时间变化的磁盘使用情况图:
我的问题是为什么这些尺寸差异如此之大?难道compaction没有同时运行?
我想说有几个因素可以在这里发挥作用。
如您所见,压缩不会同时 运行,因此每个节点上的 SSTables 的数量和内容会有所不同。
memtables 也不会同时刷新到 SSTables,所以从一开始,每个节点都会有一些不同的 SSTables。
如果您对 SSTable 使用压缩,鉴于它们的内容有些不同,通过压缩数据节省的 space 量会有所不同。
即使您使用的复制因子为 3,我认为非主要范围数据的存储 space 与主要范围数据的存储 space 略有不同,并且很可能更多的主要范围数据被映射到一个节点或另一个节点。
所以基本上除非每个节点在完全相同的时间看到完全相同的消息序列,否则它们不会有完全相同的数据大小。