gpt4 book ai didi

java - 不平衡的 Cassandra 副本存储

转载 作者:行者123 更新时间:2023-11-30 08:12:06 25 4
gpt4 key购买 nike

在我们的设置中,我们有 2 个 DC,每个 DC 中有 21 个 Cassandra 节点,每个记录总共有 4 个副本(在一个键空间中)——每个站点两个副本。每个 Cassandra 节点都设置有 16 个 VNode。我们没有为集群中的每个节点手动设置 initial_token,而是让 Cassandra 决定 token 范围分布。

我的问题 - 在我们的集群中列出 token 范围时,副本似乎以不平衡的方式存储。例如,这是显示的 672 条记录之一([42 个节点]*[16 个 VNodes]):

TokenRange(start_token:-8400100964809109474, end_token:-8379945255976340112, endpoints:[xxx.101.xxx.210, xxx.101.xxx.212, 10.x.108.xxx, xxx.164.xx.157], rpc_endpoints:[xxx.101.xxx.210, xxx.101.xxx.212, 10.x.108.xxx, xxx.164.xx.157], endpoint_details:[EndpointDetails(host:xxx.101.xxx.210, datacenter:ALLNTXDW, rack:RAC1), EndpointDetails(host:xxx.101.xxx.212, datacenter:ALLNTXDW, rack:RAC1), EndpointDetails(host:10.x.108.xxx, datacenter:BOTHWAKY, rack:RAC1), EndpointDetails(host:xxx.164.xx.157, datacenter:BOTHWAKY, rack:RAC1)])

在 672 条记录中,每个节点恰好被分配给“端点”和“rpc_endpoints”元组中第一项的 16 次(正如预期的那样)。但是第二、第三、第四项填充不均匀,导致集群不平衡。其中一个节点在 672 个元组中的 28 个中作为第四项出现,而其他节点出现的次数只有第四项的 4(!) 次。

这导致其中一个节点接收到超过 12% 的插入集群的数据( token 范围内的 672 个分配中的 86 个),而一些节点接收其中的一半( token 范围内的 672 个分配中的 43 个)。

可以控制副本的 token 范围分配吗?我该如何平衡这一点?

注意:这个集群是生产集群,已经加载了很多 TB 的数据。事实上,这个问题引起了我们的注意,因为其中一台机器的空间占用率高达 98%,而其他机器的空间使用率仅为 40%。

谢谢!加仑

最佳答案

每个主机只使用 16 个 vnode 可能不是一个好主意。每个 vnode 代币将随机生成,并期望在足够大的代币数量下实现均衡。使用的 vnode 数量越少,变化和分布不均匀的可能性就越大。

关于java - 不平衡的 Cassandra 副本存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30707015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com