更新后运行nodetool upgradedesstables的最佳方法?

时间:2013-07-10 09:19:44

标签: cassandra upgrade

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

我想知道是否建议在所有节点上并行执行此操作。具体来说,性能影响是什么?这个集群的使用频率相当高,需要全天候提供。

2 个答案:

答案 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%的磁盘空间用于数据时。