Cassandra num_令牌-这真的是num_令牌吗?
我是卡桑德拉的新手。我正在阅读cassandra.yml文件中虚拟节点的num_tokens参数。我认为我不太明白这是在做什么,或者令牌/分区是如何分配的。这到底是怎么回事 如果我们真正讨论的是令牌/节点的数量,那么默认值256没有任何意义。num\u令牌真的是num\u令牌\u分区/节点吗 让我们先选择两个节点A和B,添加第三个节点C,然后尝试解释如何工作。首先,每个节点都配置了256个num_令牌。现在,当A和B出现时Cassandra num_令牌-这真的是num_令牌吗?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,我是卡桑德拉的新手。我正在阅读cassandra.yml文件中虚拟节点的num_tokens参数。我认为我不太明白这是在做什么,或者令牌/分区是如何分配的。这到底是怎么回事 如果我们真正讨论的是令牌/节点的数量,那么默认值256没有任何意义。num\u令牌真的是num\u令牌\u分区/节点吗 让我们先选择两个节点A和B,添加第三个节点C,然后尝试解释如何工作。首先,每个节点都配置了256个num_令牌。现在,当A和B出现时 A和B在加入集群时获得多少令牌?A和B得到什么分区范围?如何决定 Cas
(3-9:B)(10:A)(11-14:B)(15-30,0-2:A)
(3-4:B)(5-9:C)(10:A)(11-14:B)(15-19:A)(20-30,0-2:C)
3) 如果C也与2个标记20,5连接
节点现在将负责以下范围
(3-9:B)(10:A)(11-14:B)(15-30,0-2:A)
(3-4:B)(5-9:C)(10:A)(11-14:B)(15-19:A)(20-30,0-2:C)
Vnode功能强大,因为现在当C加入集群时,它从多个节点(B的5-9和A的20-30,0-2)获取数据,这些节点在这些机器之间共享负载。在这个玩具示例中,您可以看到只有2个令牌允许某些节点承载大部分数据,而其他节点几乎没有。随着V节点数量的增加,节点之间的平衡随着范围变得越来越随机细分而增加。在256个节点上,您极有可能向群集中的每个节点分发了等量的数据
更多信息
V节点:
在256个节点上,您极有可能向群集中的每个节点分发了等量的数据
当然,除非不是。随机Vnode令牌范围分配与平衡负载无关。平衡负载是设计为平衡的标记范围,而不是猜测
然后在令牌范围分配CASSANDRA-6388
和CASSANDRA-7032
中存在缺陷,目前在生产中运行的任何集群中都没有修复。然后是256个VNODE集群的主要问题,并试图重建或备份它们,这实际上是不可能的
重建和恢复需要数周时间。试着在生产环境中对Vnode运行hadoop。放弃一个工程代币范围集群,去VNODE hail mary's,后果自负。而且RussS的答案是正确的,我认为很难理解 这个想法与其说是令牌分配,还不如说是Cassandra用于分配数据访问的技术手段 重要的是复制因子和环,以了解这是如何有意义的 复制的工作方式是在下两个节点上复制节点的数据。因此,如果您在节点A上,分配给A的数据将复制到B和C上。分配给B的数据将复制到C和D上,依此类推 如果只有3个节点和3个复制节点,则没有任何区别 如果您有100个节点,一个由3个和
num_令牌:1
组成的复制,那么正好有3个节点复制分配给它们的数据,这始终是一个节点的整个数据集。在我们上面的示例中,这意味着分配给A的所有数据都可以从A、B或C读取,并且只能从这三个节点读取。因此,如果您试图经常加载特定数据,而其他数据不经常加载,那么您的集群将变得相当不平衡
对于v节点,数据被分解成子分区。一台计算机代表许多虚拟节点。因此,旧计算机A现在可能表示A、D、G、J、M,假设Anum\u标记:5
接下来是戒指。在构建环时,计算机之间的连接方式将使同一台计算机不会连接到自身(a不会直接与D对话,反之亦然)
现在,这意味着一台物理计算机将连接到num\u令牌
×replication\u factor-1
其他计算机。因此,将num_令牌设置为5,复制为3,您将连接到10台其他计算机。这意味着负载将在10台计算机之间共享,而不是在3台计算机之间共享(复制系数可能会暗示这一点)
因此,对于16个节点,一个num_标记:256
和replication:3
,这将是一个奇怪的设置,因为它意味着所有节点彼此连接512次。这就是说,以后必须更改num_令牌
可能需要一点时间让集群适应新的值。特别是如果你有一个大的安装。因此,如果您预见到有大量节点,那么从一开始就使用相当大的num_令牌是一个好主意
作为一个副作用,它还将在每个节点上的不同表(文件)之间分发数据。这也有助于更快地查找数据。实际上,建议您在创建Elassandra群集时使用更多实例(16到64个),以简化搜索。这是一个非常好的答案。非常感谢!为什么范围不一致