Cassandra节点配置的推荐架构我已经看完了!根据该节点推荐的硬件基础设施
RAM: 16-32 GB,
存储: 500GB - 1TB 和8 核
64 位CPU
数据税文件说
“Cassandra 1.2 及更高版本的最大推荐容量为每个节点 3 到 5TB。”
我有大量的写入系统,比如每秒 10K 条记录,初始数据存储要求是 72TB,如果我每个节点使用 1TB,我将不得不拥有近 80 个节点(记住开销)。目的是降低节点通过向每个节点添加更多数据存储容量来增加数量。
我的问题是
1. 根据文档,16-32 GB 的 RAM 可以很好地处理 500-1TB 的数据负载。所以当我必须添加更多磁盘空间时,每个节点 3-5TB,我是否也必须增强 RAM 和 CPU?
2. 存储大小和 RAM + CPU 之间是否有任何相关性
小智 7
我认为这将如何工作取决于您的数据集和负载。存储大小和 RAM + CPU 之间没有直接相关性,但是,如果您期望从 1TB 到 3TB 的读取和写入次数是原来的 3 倍,那么您可以预期您需要使用更多 RAM 和 CPU 来适应这种情况好吧,但是您很可能不需要以 1:1 的比例增加您的 CPU 和 RAM 与您的存储空间(即,如果您将磁盘从 1 增加到 3 TB,您将不需要 3 倍 RAM 来容纳)。通常,您会发现 I/O 是瓶颈,因此拥有快速磁盘(SSD!)是最重要的。
我已经运行了具有 3TB 数据的节点,并且没有太多问题。有很多调整需要完成,所以除非你的团队中有人在调整 Cassandra 方面有很多经验,否则我不会推荐它,除非这是一个硬性要求。您必须小心的是 RAM 以及分配给 Cassandra jvm 进程的堆大小。Cassandra 的最大推荐堆为 8GB,因为垃圾收集随着堆的增大而变得更具破坏性(除非您使用 Azul Zing),并且不太频繁的 full GC 会导致碎片化,从而影响性能。一般来说,如果可以避免的话,运行具有大于 8GB 堆的 Java 应用程序并不是一个好主意。
在较新版本的 Cassandra 中,您可以将大量内容移出堆并移入本机内存。自 1.2 起,布隆过滤器和压缩元数据已移出堆并移入本机内存。在 2.1 中,您现在可以在堆外分配内存表,这可能会帮助您处理更大的数据集。因此,现在您可以从拥有更多 RAM 中获益更多,同时保持合理的 (8GB) 堆。
我的建议是始终更倾向于拥有更小的节点。这些建议的存在是有原因的,我认为这主要是因为 Cassandra 被更多地证明以这种方式使用。Cassandra 在云提供商和商用硬件上运行良好,您甚至可能会发现拥有更多小节点比拥有更少大节点更便宜。运营成本可能会变高,但如果您使用良好的配置管理工具,例如 puppet 或 Chef,成本就会降低。对于专用硬件设置,这也变得更加困难。
不过,我建议不要相信任何人的话,并在 EC2 或其他云提供商中使用不同的配置进行测试,看看哪种配置最适合您的应用程序。您的负载配置文件和数据集将真正成为这是否有效的决定因素。我怎么强调都不过分,用不同的配置做很多测试!一旦你决定了某件事,关闭它就会成为一种努力(但并非不可能)。作为为 1 个应用程序经历 3 种不同集群配置的人,我对此再怎么强调也不为过:)。为了帮助测试这一点,新的压力工具包含在 Cassandra 2.1 中,可以非常轻松地生成代表您的应用程序将执行的操作的加载场景。Cassandra 是非常可调的,并且有很多很好的衡量性能的指标,因此使用压力工具还让您有机会尝试不同的选项并了解有关管理 Cassandra 实例的更多信息(调整内存表、压缩和其他设置以获得感受)。一两周的测试将为您节省数月的艰辛!