【问题标题】:Cassandra column family bigger than nodes drive spaceCassandra 列族大于节点驱动空间
【发布时间】:2013-04-09 08:50:45
【问题描述】:

我想启动一个 cassandra 集群(例如 3 个节点),而我的应用程序只有一个列族。

阅读文档后,我了解了 cassandra 如何跨多个节点复制一个列族。

例如。每个节点都有 2Tb 驱动器空间,列族在每个节点上复制,因此每个节点都包含它的完整副本。

如果几年后该列族将超过 2Tb 并且我无法增加驱动器空间会怎样?

如果我要添加更多 10 个节点,我希望将该列族拆分为多个部分并存储在节点上的不同驱动器上,这样它就可以增加到无限大。如果我理解正确,列族仅限于集群中最小的驱动器空间?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    您描述的场景仅适用于将所有数据复制到所有节点的情况。您可以通过将复制因子 (RF) 设置为节点数来进行配置。

    但是,RF 可以小于节点数,如果添加更多节点,则不需要扩展。

    例如,如果您今天有 3 个 RF 为 3 的节点,如您所说,每个节点将包含所有数据的副本。但是如果再添加 3 个节点并将 RF 保持在 3,每个节点将拥有一半的数据。您可以不断添加更多节点,以便每个节点包含的数据比例越来越小。

    因此,原则上数据的大小没有限制。

    【讨论】:

    • 如果我有 3 个节点和 RF 2,那么第三个节点会包含什么?
    • 数据按行键拆分。每个行键都根据其令牌进行散列并存储在 RF 节点上。因此,对于 3 个节点,Cassandra 根据行键的散列有效地将您的数据分成 3 个部分,X、Y 和 Z。如果您的节点是 A、B 和 C,并且按该顺序具有平衡令牌,则节点 A 包含 X 和 Y,节点 B 包含 Y 和 Z,节点 C 包含 Z 和 X。所以每个节点包含 2/3 的数据,但没有两个节点包含相同的东西。
    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 2020-05-28
    • 2015-01-16
    • 1970-01-01
    • 2013-09-18
    • 2023-03-19
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多