3

我正在测试具有不同配置的 Cassandra 集群的行为。其中之一使用 ByteOrderedPartitioner 沿节点分发密钥。

数据模型由胖行组成,每行都有一个整数(IntegerType)作为键,值从 0 到 9999。我以这种方式设置了 10 个节点的环:

Address      Rack    Status    State            Owns    Token
                                                     Token(bytes[0900])
node1         Up     Normal  5.14 MB         10.00%  Token(bytes[00])
node2         Up     Normal  377.42 MB       10.00%  Token(bytes[0100])
node3         Up     Normal  373.06 MB       10.00%  Token(bytes[0200])
node4         Up     Normal  966.15 KB       10.00%  Token(bytes[0300])
node5         Up     Normal  953.4 KB        10.00%  Token(bytes[0400])
node6         Up     Normal  953.26 KB       10.00%  Token(bytes[0500])
node7         Up     Normal  944.54 KB       10.00%  Token(bytes[0600])
node8         Up     Normal  953.4 KB        10.00%  Token(bytes[0700])
node9         Up     Normal  962.42 KB       10.00%  Token(bytes[0800])
node10        Up     Normal  961.31 KB       10.00%  Token(bytes[0900])

但所有负载都在节点 2 和节点 3 上进行复制。

为什么这些令牌不起作用?我应该如何修复它们?

4

1 回答 1

3

首先,您应该在每个节点上运行清理,以确保您没有看到节点不再负责的额外数据,引导后。

完成后,您可以使用getRangeKeySampleJMX 方法获取节点上的键样本。然后,如有必要,您可以将其令牌调整为将适当数量的键移动到其邻居的值。

也就是说:你几乎肯定应该使用它RandomPartitioner,以避免这个问题。我在这样的帖子中解释了如何在分区键中使用集群进行排序,否则你可能会倾向于使用 BOP。

于 2012-06-20T00:56:57.577 回答