【问题标题】:Used disk space difference in cassandracassandra中使用的磁盘空间差异
【发布时间】:2017-02-28 19:57:31
【问题描述】:

我正在使用 Cassandra 2.2.4。在这些表中,我有一个复制因子为 3 的表,但我只有 2 个节点。这两个节点的已用磁盘空间不同(第一个节点有 10 GB 大小,第二个节点有 14国标)。造成这些差异的原因是什么。

谁能帮帮我?

【问题讨论】:

  • 2 个节点的 RF3 背后的原因是什么?并且使用的磁盘空间并不总是相同,但在您的情况下,可能是您的第二个节点正在成为热点。
  • 实际上我们需要 3 个复制,这就是为什么我们最初将 RF 设置为 3 和可用的 2 个节点,并决定将来添加一个额外的节点。
  • 如果您需要 RF3,那么您可以在添加新节点后更改为 RF3。现在不需要添加。对于两个节点,最大使用 RF2。因为您将无法将第三个复制数据存储到任何节点。
  • 表示磁盘空间差异的原因与节点号和RF的差异无关
  • 在分布式系统中,数据的分布应该几乎是均等的,但是当单个节点存储的数据越来越多而其他节点存储的数据越来越少时,那么存储大量数据的节点被称为Hot Spot。热点可能有多种原因。但如果发生这种情况,我们和节点的依赖关系较小,我们通常会使用 nodetool decommission 将节点从集群中移除,然后再添加。如果删除会妨碍您的一致性,那么我们添加另一个节点来删除热点节点以保持一致性。

标签: cassandra


【解决方案1】:

即使复制因子为 1,磁盘空间可能仍然不同。这是因为一些分区存储在一个节点中,而其他分区存储在另一个节点中。
如果您有更多属于分区 A 的数据,那么具有分区 A 的节点将拥有更多数据。
分区由主键确定。这就是为什么拥有一个好的主键如此重要的原因。 您可以观看datastax网站上的教程,详细了解如何选择最佳数据模型和主键:https://academy.datastax.com/courses

【讨论】:

  • 好的,谢谢。还有一个疑问,是否有机会将两个副本存储到同一个节点中?
  • 不,2个副本不能在同一个节点上。在您的情况下,即使您的复制因子为 3,数据也只会复制 2 次,每个节点上都有一个副本。不会有具有第三个副本的节点。
  • 这也和一致性级别有关。现在我猜你有一致性级别 1,我认为这是默认的,所以一切正常。如果您将一致性级别设置为 ALL,并且复制因子大于节点数,我认为您会遇到异常,因为它会尝试将数据复制到不存在的第三个节点。
猜你喜欢
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多