我正在使用Apache Cassandra 2.1.1,当使用nodetool状态时,我的一个节点的负载大约是其他两个节点的一半,而Owns在所有节点上几乎相等。我对Cassandra有点新鲜,不知道我是否应该为此担心。我在重新启动所有节点后尝试使用修复和清理,但它仍然显示不平衡。我正在使用GossipingPropertyFileSnitch,每个节点都配置了dc = DC1和在cassandra-rackdc.properties中指定的rack = RAC1。我也使用Murmur3Partitioner和NetworkTopologyStrategy,我的键空间定义为
CREATE KEYSPACE awl WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '2'} AND durable_writes = true;
我认为与awl键空间有关的问题是因为data / awl文件夹的大小与nodetool status报告的大小相同。我的nodetool状态输出如下。任何帮助将不胜感激。
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.1.1.152 3.56 GB 256 68.4% d42945cc-59eb-41de-9872-1fa252762797 RAC1
UN 10.1.1.153 6.8 GB 256 67.2% 065c471d-5025-4bf1-854d-52d579f2a6d3 RAC1
UN 10.1.1.154 6.31 GB 256 64.4% 46f05522-29cc-491c-ab65-334b205fc415 RAC1
答案 0 :(得分:0)
我怀疑这是由于正在插入的键值的分布。它们可能没有很好地分布在可能的键值上,因此很多都是散列到一个节点。由于您使用的是复制因子2,因此第二个副本是环中的下一个节点,导致两个节点的数据多于第三个节点。
您没有显示表架构,因此我不知道您使用的是分区和群集密钥。您希望使用具有高基数和良好分布的键值,以避免大量插入散列到一个节点的热点。通过更好的分发,您将在整个节点上获得更好的性能和更均匀的空间使用。