我目前正在将21节点集群从0.8升级到1.0.11版。 cassandra升级过程要求在升级软件后通过nodetool升级稳定版将sstables更新为最新格式。这个过程似乎需要很长时间。我有一个节点已运行48小时但仍未完成。
我想知道是否建议在所有节点上并行执行此操作。具体来说,性能影响是什么?这个集群的使用频率相当高,需要全天候提供。
答案 0 :(得分:6)
在压缩过程中,您的节点将以“compaction_throughput_mb_per_sec”的速度重写每个sstable。
我的猜测是性能影响直接与此设置的值相关联。较低的值(默认值为16Mb,您可以降低)应允许您升级群集而不会降低速度。
答案 1 :(得分:0)
我在所有节点上同时运行升级。我运行命令(在Linux上)
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
MyClass classUnderTest = new MyClass();
Action test = () =>
{
classUnderTest.ThrowMyException();
};
test.ShouldThrow<MyException>() //.And.Data.Keys.Should().Contain("")
}
}
然后注销并让它继续运行。它是一个低优先级的任务,只要需要重写所有需要重写的sstables就需要它。升级运行时,我没有注意到任何延迟问题。
例如,如果每个节点有1TB数据(顽皮!),那么升级需要在多个文件中重写所有1TB数据。阅读以较慢的速度写这么多数据可能需要几天时间。
note :由于sstables是不可变的,并且由于通过创建sstable文件的硬链接来进行备份,因此在升级过程正常时,您将使用的磁盘空间增加一倍。因此,如果需要释放空间,请注意磁盘空间并删除快照,尤其是当节点使用超过50%的磁盘空间用于数据时。