Greeings, 我已经配置了3个节点Cassandra 1.2.12集群,我能够连接到master并在所有节点上创建键空间和表。但是,我想在我的集群上运行YCSB,所以当我运行YCSB并加载数据时,它全部加载到Master上。由于我正在加载1000000条记录,因此我通过将该数字除以我拥有的节点数来计算初始标记。 当我运行nodetool时,我会得到类似的东西:
Address Rack Status State Load Owns Token
10.3.2.8 2 Up Normal 1.08GB 100% 0
10.3.1.231 2 Up Normal 67.58KB 0% 330000
10.3.1.128 2 Up Normal 52.79KB 0% 660000
有人有同样的问题吗?我尝试使用tokengentool来分配tokes和diffrenet分区(Murmur3和Random),它们完全相同,只是在主节点上加载所有数据。
问候,Veronika。
答案 0 :(得分:4)
A" row"不等于卡桑德拉的一个代币。无论您打算存储多少行,Cassandra的RandomPartitioner都支持2 ^ 127个令牌。对于3节点集群,这些初始令牌应相互增加56,713,727,820,156,410,577,229,101,238,628,035,242。
使用DataStax的Python脚本来计算初始令牌,这些RandomPartitioner值应该适合您:
node 0: 0
node 1: 56713727820156410577229101238628035242
node 2: 113427455640312821154458202477256070485
如果您使用的是Murmur3 Partitioner(-2 ^ 63到+ 2 ^ 63令牌),请使用以下值:
node 0: -9223372036854775808
node 1: -3074457345618258603
node 2: 3074457345618258602
所以在这一点上,你有两个选择:
1 - 停用10.3.1.231和10.3.1.128,停止节点,改变它们的initial_token值以匹配上面的内容,并重新启动它们。但鉴于您提到尝试Murmur3和RandomPartitioner这一事实,我认为您最好选择下面的选项#2。
2 - 停止所有节点,删除您的数据,follow these instructions,然后重新加载数据。
此外,您可能希望调整为键空间定义的复制因子。对于3节点群集,您将需要至少为2的复制因子。这将确保如果一台服务器出现故障,您仍然会有一份数据副本。这应该仍然允许您的应用程序解决(只要您的读/写一致性设置为ONE)。