【问题标题】:How to generate multidatacenter tokens for murmur3 partitioner如何为 murmur3 分区器生成多数据中心令牌
【发布时间】:2014-02-21 20:28:48
【问题描述】:

我有一个具有 3 个节点的 cassandra 环、具有 3 个节点的 hadoop 环和具有 3 个节点的 solr 环都在同一个集群中。

我的计划是将数据写入 cassandra ring 并使用 cassandra DC 复制将数据复制到其他两个 ring(Hadoop 和 solr)

我为 cassandra 环使用 vnode,我需要为 hadoop 和 solr 使用令牌,因为 hadoop/solr 不支持 vnode。

我的问题是如何为 murmur3 分区器生成多个数据中心令牌?

【问题讨论】:

  • 与此相同的问题。起初,我尝试在每个 DC 中使用相同的标记集(例如 DC1 使用标记 A、B、C;DC2 也使用标记 A、B、C)。但似乎一个令牌在整个集群中必须是唯一的,因为当您尝试启动另一个节点来重新使用来自不同 DC 的现有节点的令牌时,该另一个节点将从环中消失(在 OpsCenter 和 nodetool 状态下) )。我也在使用 Murmur3Partitioner

标签: cassandra datastax-enterprise datastax


【解决方案1】:

在多 DC 设置中,您可以选择一个 DC 并为一个 DC 中的节点平均计算令牌。其他 DC 中的节点将具有相同的令牌 + 一些偏移量,以便令牌是唯一的。 Cassandra 包作为一个工具来帮助你计算代币:

https://www.geroba.com/cassandra/cassandra-token-calculator/

【讨论】:

  • 令牌生成器工具用于随机分区器。我正在使用 murmur3 分区器。所以,我在 hadoop 中有 3 个节点,在 solr 中有 3 个节点。我可以计算 6 个节点的代币并在它们之间分配吗?
【解决方案2】:

TL;DR;
使用 vnodes,代币计算为您完成。

您可以正常执行此操作,但只需添加 100(100 到 1000 之间的任何值都可以让您在引导超过 10 次时失败,而不必担心遇到新节点在先前尝试令牌时自动加入的问题在第二个 DC。(感谢华金!))

例如(注意每个令牌中的最后 3 个数字)

DC1

  1. -9223372036854775808
  2. -3074457345618258603
  3. 3074457345618258602

DC2

  1. -9223372036854775708
  2. -3074457345618258503
  3. 3074457345618258502

Old docs,但仍然有效。

【讨论】:

  • 但是这个不是用于 murmur3partitioner 令牌?/它用于 randompartitioner
  • 请注意,-9223372036854775808 是 Murmur3 范围的绝对底部,因此将右第三位推到 9 会使它成为无效值,因为您现在是 -2^63 - 100。
猜你喜欢
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 2020-08-07
  • 2019-06-05
  • 2016-03-22
相关资源
最近更新 更多