正如我所理解的,两者都告诉我们,特定分区中的数据量不应超过其他分区。因此,我们应该选择适当的分区键来弥补这些问题。但这两种成语到底有什么区别呢?
发布于 2021-07-27 01:06:33
虽然它们可能出于相同的原因(数据模型和分区键基数),但节点之间的数据不平衡可能由于其他原因而发生。
如果分区键没有足够的选择性,在某些情况下,数据分区的数量会增加,每个分区的最大推荐值为100 Mb,但理想情况下不超过10 Mb。
虽然具有低基数的分区键可能会导致一些倾斜,但您也可以在将令牌分配到环中时得到一个倾斜。与RandomPartitioner相比,RandomPartitioner更习惯于产生不平衡的结果--但即使使用allocate_tokens_for_keyspace / allocate_tokens_for_local_replication_factor,也可以对Murmur进行改进--根据所使用的C*或DSE版本,相同的设置有不同的名称,但其想法是向分区程序提供更多有关预期复制因子的信息,因此它产生了更多的均衡分配。
数据可能不平衡的另一种方式是拓扑选择--如果使用NetworkTopologyStrategy (建议使用的是多个机架)和多个机架创建具有键空间的集群--除非每个机架的节点数相同,否则数据将不平衡。例如(为了演示结果,并不表示您会这样做)。
使用3GB和100 GB的射频数据,每个机架将保存一个副本。机架1和2中的节点大约各为20 in,机架3为50 in(大致)。
这就是为什么在使用机架时,通常的建议是,当每个DC扩展时,节点数量将增加3。
https://stackoverflow.com/questions/68536805
复制相似问题