cassandra - 在 Cassandra 节点上增加磁盘大小时要考虑什么?

标签 cassandra

我在生产环境中运行一个 10 节点的 Cassandra 集群。 99% 写; 1% 读取,0% 删除。节点有 32 GB RAM; C* 使用 8 GB 堆运行。每个节点都有一个用于提交日志的 SDD 和用于数据的 2x4 TB 旋转磁盘 (sstables)。该架构仅使用 key 缓存。 C* 版本为 2.1.2。

可以预见,集群将在不久后耗尽空闲磁盘空间。所以它的存储容量需要增加。客户端更喜欢增加磁盘大小而不是添加更多节点。因此,计划是将每个节点中的 2x4 TB 旋转磁盘替换为 3x6 TB 旋转磁盘。

  • 这里有什么明显的陷阱/注意事项需要注意吗?像:
    • C* 能否使用这种 RAM 处理每个节点高达 18 TB 的数据大小?
    • 是否可以通过挂载一个新的(更大的)磁盘来增加磁盘大小,将所有 SS 表复制到其中,然后将其挂载到与原始(较小的)磁盘相同的挂载点(以替换它)?

最佳答案

我建议添加节点而不是增加当前节点的数据大小。添加节点将通过具有易于更换的小型节点来利用 Cassandra 的分布特性。

此外,对于旋转磁盘,集群中单个节点的推荐大小约为 1 TB。一旦高于该值,我只能想象性能会显着下降。

更不用说如果一个节点丢失了它的数据,恢复它需要很长时间,因为它必须从其他节点流式传输大量数据。

Can C* handle up to 18 TB data size per node with this amount of RAM?

这在很大程度上取决于您的工作量。

Is it feasible to increase the disk size by mounting a new (larger) disk, copy all SS tables to it, and then mount it on the same mount point as the original (smaller) disk (to replace it)?

我看不出为什么它不起作用。

关于cassandra - 在 Cassandra 节点上增加磁盘大小时要考虑什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509595/

相关文章:

schema - 在 Cassandra 列族的架构中提供列名称而不是在架构中不提供任何列信息有什么好处吗?

hadoop - 有什么工具可以让我从两个表中加入数据——一个在 hive 中,另一个在 cassandra 中。我也必须通过 oozie 来完成这项工作

cassandra - 使用 LeveledCompactionStrategy 时是否可以检查 sstable 属于哪个级别?

c++ - 我可以像 nodetool 那样强制从 C/C++ 驱动程序刷新 Cassandra 表吗?

linux - cassandra 开发人员广泛使用哪个版本的 Linux 服务器?

应用程序日志的 Cassandra 数据模型(数十亿次操作!)

python - 无法使用最新的 datastax python 驱动程序扩展 cassandra

java - cassandra中varchar/文本的最大长度

node.js - Cassandra 不一致

hadoop - 如何在 Pig Latin 中生成大量数据的不同平均值?