卡桑德拉:能力计划

我正在调查将一些大型数据库从MySQL移到Cassandra,我正试图弄清楚如何规划群集。 从历史上看,只需要购买磁盘来包含相关数据,但是我不清楚Cassandra如何使用磁盘空间和RAM空间。

在规划一个集群时,会出现每台机器有多less台机器,多less磁盘,多less内存等问题。 我如何回答这个1TB? 10TB? 更多?

基本上, 每个节点的磁盘公式为D x RF / N x O / C,其variables定义如下:

  • D是您的整体数据大小。
  • 射频是你的复制因素。 大多数集群至less使用2个(用于耐久性)或3个(用于CL =法定数量时的组合耐用性和可用性)。
  • N是群集中的节点数量。 这至less是RF。 您还需要增加此数字,直到您获得舒适的“每个节点的磁盘”结果。
  • O是磁盘上的索引和未合并的sstables的开销乘数。 除非几乎没有索引和非常稳定的数据,否则我会在这里使用至less一个O = 2因子。
  • 如果您启用Cassandra 1.0+压缩支持,则C是您将节省的因素。 这将大致节省您从具有代表性内容的文件中获取的压缩。 如果禁用压缩,则使用C = 1。 如果压缩将数据大小缩减一半,那么请尝试C = 0.6左右,因为压缩并不是用于所有事情(例如,索引)。

一旦你得到了一些数字,你应该定位一个“每个节点的磁盘数”不超过可用本地存储的30%,这样你就不必立即增长集群,因此快照是可能的。

内存计划很大程度上取决于模式的外观,但是每个节点至less需要4GB专用于Cassandra。 操作系统将能够使用超越这个的任何东西进行高度有利的磁盘caching。 更多的内存只有在实质上超过磁盘上的实际数据量时才会变得完全无用。

能力计划确实是一门科学(就math/统计而言)。 由于math模型不会让你在任何地方,你真的必须设置一个testing床,可以用来回答你的问题,因为没有人可以为你提供一个你似乎要求的理论模型。

如何回答这个问题:

  1. 获得(可扩展的)testing平台
  2. 用你的数据填充它
  3. 编写适当的负载生成工具
  4. 应用加载和测量
  5. 测量并对结果进行健全性检查
  6. 可以select调谐,也可以再次转到3.或4.

或聘请专业人员。