cassandra节点与vnodes令牌策略极不平衡

3zwtqj6y  于 2021-06-09  发布在  Cassandra
关注(0)|答案(3)|浏览(324)

使用每个节点有256个令牌的vnodes策略,我的集群在执行nodetool status时显示如下信息。似乎我的集群负载非常不平衡。我不知道这是什么原因。表的分区键相关吗?欢迎发表任何意见,谢谢!

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.190  9.78 GiB   256          ?       f3e56d8d-caf2-450a-b4f1-e5ac5163a17a  rack1
UN  192.168.1.191  77.53 MiB  256          ?       e464cda9-ca8b-400b-82eb-59256d23c94a  rack1
UN  192.168.1.192  89.31 MiB  256          ?       6feaa65f-2523-4b65-9717-f4f3cbf28ef0  rack1
tquggr8v

tquggr8v1#

大多数table都是统一的,但这一张

kairosdb/data_points histograms  —— NODE1 load 9.73GB
Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
                              (micros)          (micros)           (bytes)
50%             2.00             17.08            152.32              1597                86
75%             2.00             35.43            182.79              9887               446
95%             2.00             88.15            263.21             73457              3973
98%             2.00            105.78            263.21            315852             20501
99%             2.00            105.78            263.21            545791             29521
Min             2.00              6.87            126.94               104                 0
Max             2.00            105.78            263.21            785939             35425

kairosdb/data_points histograms  —— NODE2 load 36.95MB
Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
                              (micros)          (micros)           (bytes)
50%             1.00             20.50            454.83              1109                42
75%             2.00             42.51            943.13              9887               446
95%             2.00             73.46          14530.76             73457              3973
98%             2.00            219.34          14530.76            263210             17084
99%             2.00            219.34          14530.76            545791             29521
Min             1.00              8.24             88.15               104                 0
Max             2.00            219.34          14530.76            785939             35425

kairosdb/data_points histograms  —— NODE3 load 61.56MB
Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
                              (micros)          (micros)           (bytes)
50%             1.00             14.24            943.13              1331                50
75%             1.00             29.52           1131.75              9887               446
95%             1.00             61.21           1131.75             73457              3973
98%             1.00            152.32           1131.75            315852             17084
99%             1.00            654.95           1131.75            545791             29521
Min             1.00              4.77            785.94                73                 0
Max             1.00            654.95           1131.75            785939             35425
sd2nnvve

sd2nnvve2#

即使主令牌范围存在严重的不平衡(关于负载的某些内容不正确),如果您使用的rf为3,那么所有3个节点都将具有所有数据的副本,并且任何主范围不平衡都将不可见。
为了获得不平衡,您已经发布了使用rf1的点,并且可能是一个糟糕的数据模型/分区键,它将数据热插接到单个节点。

ttcibm8c

ttcibm8c3#

是的,分区键的分布很可能有偏差,很可能有些分区的行比其他分区的行多得多。查看此文档中的建议,特别是“每个分区的单元数”和“大分区”部分。您可以使用多种工具来检查假设: nodetool tablehistograms (可能需要对每个表分别执行)在每个主机上,将以字节为单位显示50%、75%、…、100%百分位数的单元数和分区大小。你可能会看到95%和100%百分位之间的巨大差异。 nodetool tablestats 将显示每个主机上每个表的分区的最大平均大小(&A)
dsbulk有一个选项,可以根据每个分区的行数显示最大的分区—它需要对集群中的每个表执行一次,但只执行一次,而不是从每个主机执行 nodetool :

dsbulk count -k keyspace -t table --log.verbosity 0 --stats.mode partitions

相关问题