【问题标题】:Cassandra Virtual NodesCassandra 虚拟节点
【发布时间】:2020-01-21 18:54:48
【问题描述】:

虽然被问了很多次,也回答了很多次,但无论如何我都没有找到好的答案。 无论是在论坛中还是在 cassandra 文档中。

虚拟节点是如何工作的?

假设一个节点有 256 个虚拟节点。 文档说它们是随机分布的。 (放弃“随机”完成的方式......我还有另一个更紧迫的问题):

  1. 每个 cassandra 节点(“物理”)实际上负责环中的几个不同位置,这对吗? (对于 256 个位置)?这是否意味着“物理”节点在整个圈子上“散布”?

  2. 在这种情况下,重新平衡如何工作?如果我添加一个新节点? 该环将获得额外的 256 个节点。 这些额外的节点如何将数据与旧节点分开? 它们基本上会以额外的“自行车辐条”的形式出现在整个环中吗?

网上很多资料,但没有人解释清楚...

【问题讨论】:

  • 请尝试每个问题问一个问题。

标签: cassandra


【解决方案1】:

Vnodes 将可用的令牌范围分成更小的范围,由 cassandra.yaml 文件中的 num_tokens 设置定义。 vnode 范围随机分布在整个集群中,并且通常是不连续的。如果我们对 num_tokens 使用较大的数字来分解令牌范围,则随机分布意味着我们不太可能出现热点。使用统计计算,任何大小的所有集群始终具有良好的令牌范围平衡点是当使用 256 个 vnode 时。因此,社区推荐 num_tokens 默认值为 256,以防止集群中出现热点。

Ans 1:- 它是一个基于 num_tokens 的令牌范围。如果您设置了 256,您将获得 256 个令牌范围,这是默认值。

回答 2:- 是的,当您添加或删除节点时,令牌将根据 vnodes 配置再次分布在集群中。

您可以参考这里https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbArch/archDataDistributeVnodesUsing.html了解更多详情

【讨论】:

    【解决方案2】:

    LetsNoSQL 的答案是正确的。另见https://stackoverflow.com/a/37982696/5209009。我只会再添加几个 cmets:

    1. 是的,“物理”节点分布在令牌范围内。
    2. 如链接中所述,任何新节点都将采用 256 个新的令牌范围,划分一些现有的范围。没有其他的再平衡,它依靠随机性来实现一些再平衡,这就是为什么它在每个节点使用相对大量 (256) 的令牌。

    值得一提的是,还有另一种选择。您可以使用令牌分配算法在每个节点 (4-8) 上运行具有较少令牌数的 vnode。任何新令牌都不会随机分配,将使用贪心算法,以便新令牌将创建优化给定键空间负载的分布。它只会将包含大部分数据的令牌范围分成两半。由于它不是随机的,它可以使用较少数量的令牌(4-8)。它与小型集群并不真正相关,但对于 100 多个节点它可能是相关的。

    https://www.datastax.com/blog/2016/01/new-token-allocation-algorithm-cassandra-30https://thelastpickle.com/blog/2019/02/21/set-up-a-cluster-with-even-token-distribution.html

    【讨论】:

    • 那么,每个物理节点负责圆内的N(256)个哈希范围?如何提供分区?如何确保一个分区在 1 个哈希范围(我的意思是 256 中的一个)范围内有足够的磁盘空间?如果(在这里我幻想)一个分区可以分布在 N 个这样的哈希范围中,如何确保它们都属于同一个物理节点?
    • 是的,每个节点将负责圈内的N个哈希范围。实际上,它不止于此,它是 N*,因为每个节点都会有副本。可以使用cassandra.apache.org/doc/latest/configuration/… 创建您自己的令牌分发。根据定义,属于一个分区键的所有数据将映射到单个令牌范围(因为应用于分区键的哈希函数将创建一个单个值)。如果一个分区键包含如此多的数据,您可能需要重新考虑分区。
    猜你喜欢
    • 2014-03-08
    • 2012-07-23
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多