9

我目前正在将 21 节点集群从 0.8 升级到 1.0.11 版本。cassandra 升级过程要求在软件升级后将 sstables 更新为最新格式(通过 nodetool upgradesstables)。这个过程似乎需要很长时间。我有一个节点已经运行了 48 小时,但仍未完成。

我想知道是否建议在所有节点上并行执行此操作。具体来说,性能影响是什么?该集群的 r/w 使用量相当大,需要 24/7 全天候可用。

4

2 回答 2

7

在压缩期间,您的节点将以“compaction_throughput_mb_per_sec”的速度重写每个 sstable。

我的猜测是,性能影响与此设置的值直接相关。较低的值(默认为 16Mb,您可以降低)应该允许您升级集群而不会减慢它的速度。

于 2013-09-24T20:34:38.990 回答
1

我在所有节点上同时运行升级。我运行命令(在 Linux 上)

nohup nodetool upgradesstables &

然后注销并让它运行。这是一个低优先级的任务,它会花费尽可能长的时间来重写所有需要重写的 sstable。升级运行时我没有注意到任何延迟问题。

例如,如果每个节点有 1TB 的数据(淘气!),那么升级需要跨多个文件重写所有 1TB 的数据。以缓慢的速度读取写入这么多数据可能需要几天时间。

注意:由于 sstable 是不可变的,并且由于备份是通过创建指向 sstable 文件的硬链接来进行的,因此随着升级过程的进行,您将使用双倍的磁盘空间。因此,请注意您的磁盘空间并在需要时删除快照以释放空间,尤其是当您的节点使用超过 50% 的磁盘空间用于数据时。

于 2016-01-19T14:42:03.850 回答