【问题标题】:When does Cassandra hit Amdahl's law?卡桑德拉何时达到阿姆达尔定律?
【发布时间】:2012-01-13 21:47:30
【问题描述】:

我试图理解 Cassandra 随节点数量线性扩展的说法。快速浏览一下'net,我还没有看到太多关于这个话题的处理方法。当然,Cassandra 中的串行处理元素必须限制随着 N 增加而获得的速度。任何关于这个主题的想法、指针或链接都将不胜感激。

编辑以提供视角:
我正在开发一个项目,该项目当前需要 1,000 多个节点的 Cassandra 基础设施。我没有提出这个规范。我发现自己建议将 N 减少到 200 到 500 之间的范围,每个节点的串行计算速度至少要快两倍。通过对服务器配置进行简单的更改,这很容易实现,而不会影响每个节点的成本。

【问题讨论】:

  • “肯定有串行处理元素”——你为什么这么肯定?
  • @fennec:因为很少有问题是 100% 可并行化的
  • @Schildmeijer:我看过这篇很棒的文章。就像我发现的大多数内容一样,它似乎没有提供一种方法来量化 Cassandra 使用中是否存在限制可实现收益的串行处理方面。请查看我的编辑以更深入地了解我的问题。

标签: cassandra


【解决方案1】:

Cassandra 的缩放最好用 Gustafson's law 来描述,而不是 Amdahl's law。 Gustafson 缩放着眼于随着节点数量的增加您可以处理多少数据。也就是说,如果你有 N 倍的节点,你可以在相同的时间内处理 N 倍大的数据集。

这是可能的,因为 Cassandra 几乎不使用集群范围内的协调,除了模式和环更改。大多数操作只涉及与复制因子相等的节点数量,随着数据集的增长,复制因子保持不变——因此几乎是线性横向扩展。

相比之下,Amdahl 缩放关注的是随着节点数量的增加,您可以多快处理固定数据集。也就是说,如果你有N倍的节点,你处理同一个数据集能快N倍吗?

显然,在某些时候,您会达到一个限制,即添加更多节点不会使您的请求更快,因为服务请求所需的时间最短。 Cassandra 在这里不是线性的。

在您的情况下,听起来您是在问拥有 1,000 个慢速节点还是 200 个快速节点更好。你的数据集有多大?这取决于您的工作负载,但通常的建议是每个节点的最佳大小约为 1TB 数据,确保您有足够的 RAM 和 CPU 来匹配(请参阅cassandra node limitations)。 1000 听起来太多了,除非你有 PB 级的数据。

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2021-03-18
    相关资源
    最近更新 更多