2012-06-19 66 views
3

我正在测试具有不同配置的Cassandra群集的行为。其中一个使用ByteOrderedPartitioner沿节点分发密钥。如何计算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]) 

但所有负载那张node2,并且在节点3的副本。

为什么这些标记不起作用?我应该如何解决它们?

+0

我发现这个问题。我设置了两个列族:一个具有IntergerType行键(4字节),另一个具有LongType(16字节)。 出于这个原因,使用令牌4个字节长,第一CF作品而不是第二个。 当然,具有16个字节长的令牌我有同样的问题,但与第二CF. – cesare

回答

3

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

一旦完成,您可以使用JMX方法获取节点上的键样本。如有必要,您可以将其标记调整为适当数量的键移动到其邻居的值。

这就是说:你应该几乎肯定会使用RandomPartitioner来代替,以避免这个问题。我已经在this这样的帖子中解释过如何使用群集内的分区键来做类似的排序,否则你可能会试图使用BOP。