在Cassandra中,宽分区和数据倾斜有什么区别?



据我所知,两者都在告诉特定分区中的数据量不应超过其他分区。因此,我们应该选择合适的分区键来弥补这些问题。但是这两个习语到底有什么区别呢?

虽然它们可能由于相同的原因(数据模型和分区键基数)而发生,但节点之间的数据不平衡可能由于其他原因而发生。

如果分区键没有足够的选择性,可能会出现数据分区数量增长的情况,建议每个分区的最大数量为100 Mb,但理想情况下不超过10 Mb。

虽然拥有一个低基数的分区键可能会导致一些倾斜,但是在向环分配令牌时也可能会出现倾斜。RandomPartitioner有更多的习惯产生一种不平衡的结果相比MurmurPartitioner——但即使杂音可以提高利用allocate_tokens_for_keyspace/allocate_tokens_for_local_replication_factor -同样的设置不同的名称取决于所使用的C *或内镜下动态慢动作影像版本,但这个想法是为瓜分者提供了更多的信息关于目的复制因子,因此产生更多的平衡分配。

数据不平衡的另一种方式来自拓扑选择—如果您使用NetworkTopologyStrategy(建议您这样做)和多个机架创建具有键空间的集群—除非每个机架的节点数量相同,否则数据将不平衡。例如(为了演示结果,而不是说您会这样做)

  • 机架1 = 5个节点
  • 机架2 = 5个节点
  • 机架3 = 2个节点。

在RF为3和100gb数据的情况下,每个机架将保存一个副本。机架1和机架2中的节点大约每个20Gb,机架3中的节点大约每个50Gb。

这就是为什么使用机架时通常的建议是每个DC扩展时增加3个节点计数。

相关内容

  • 没有找到相关文章

最新更新