卡桑德拉重新平衡

时间:2015-01-02 17:18:06

标签: load-balancing cassandra-2.0

我正在使用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

1 个答案:

答案 0 :(得分:0)

我怀疑这是由于正在插入的键值的分布。它们可能没有很好地分布在可能的键值上,因此很多都是散列到一个节点。由于您使用的是复制因子2,因此第二个副本是环中的下一个节点,导致两个节点的数据多于第三个节点。

您没有显示表架构,因此我不知道您使用的是分区和群集密钥。您希望使用具有高基数和良好分布的键值,以避免大量插入散列到一个节点的热点。通过更好的分发,您将在整个节点上获得更好的性能和更均匀的空间使用。