使用Murmur3Partitioner对cassandra节点进行分区

时间:2014-06-12 05:02:45

标签: cassandra database-partitioning

在我的项目中,我使用cassandra 2.0,并拥有3个数据库服务器。

  1. 3台服务器中有2台拥有2 TB硬盘,最后一台只有200 GB。所以,我希望2台服务器响应的负载高于最后一台。
  2. Cassandra:我使用Murmur3Partitioner对数据进行分区。
  3. 我的问题是:如何为每个cassandra实例计算initial_token

    感谢您的帮助:)

2 个答案:

答案 0 :(得分:4)

如果您使用的是最新版本的Cassandra(2.x),则可以配置节点相对于群集中其他节点应该保留的令牌数。无需再通过initial_token指定令牌范围边界。相反,您通过num_tokens参数为节点提供“权重”。由于较小节点的容量大约是大节点的1/10,因此请相应调整该节点的权重。默认权重是256.因此,您可以从较小节点的权重25开始,然后尝试查看它是否正常工作。

答案 1 :(得分:0)

Murmur3Partitioner:根据 MurmurHash 哈希值在群集中统一分布数据。

Murmur3Partitioner使用 -263到+ 263-1的最大可能哈希值范围。以下是计算令牌的公式:

python -c' print [str((2 64 / number_of_tokens)* i) - 2 63)for i in range(number_of_tokens)]'

例如,为10个节点生成令牌:

python -c' print [str(((2 64/10)* i) - 2 63)for i in range(10)]'