2

问候,我已经配置了 3 节点 Cassandra 1.2.12 集群,我能够连接到主节点并在所有节点上创建键空间和表。但是,我想在我的集群上运行 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 来分配令牌和 diffrenet 分区(Murmur3 和 Random),它都是一样的,只是在主节点上加载所有数据。

问候,维罗尼卡。

4

1 回答 1

4

“行”不等于 Cassandra 中的令牌。无论您打算存储多少行,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 分区器(-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 - 停止所有节点,删除您的数据,按照这些说明操作,然后重新加载您的数据。

此外,您可能需要调整为键空间定义的复制因子。对于 3 节点集群,您将需要至少 2 的复制因子。这将确保如果一台服务器出现故障,您仍然会有一份数据副本。这仍然应该允许您的应用程序解决(只要您的读/写一致性设置为 ONE)。

于 2013-12-17T22:11:14.107 回答