有什么选择可以加速卡桑德拉的全面修复?

时间:2015-03-19 13:24:36

标签: cassandra cassandra-2.0

我有一个Cassandra数据中心,我想对其进行全面修复。数据中心用于分析/批处理,我愿意牺牲延迟来加速完整修复(nodetool repair)。写入数据中心是适度的。

我有什么选择让整个修复更快?一些想法:

  • 增加streamthroughput
  • 我想我可以暂时禁用自动编译并缩小compactionthroughput。不确定我是否想要那样,但是......

其他信息:

  • 我正在运行固态硬盘,但没有花时间调整cassandra.yaml

1 个答案:

答案 0 :(得分:6)

默认情况下,按顺序运行完整修复。节点的状态和差异'数据集存储在二叉树中。重新创建这些是这里的主要因素。根据{{​​3}},"每次执行修复时,都必须计算树,修复中涉及的每个节点都必须从它存储的所有sstables构建其merkle树进行计算很贵。"

我认为显着提高完整修复速度的唯一方法是在并行中运行它,或者通过子范围修复子范围。您的标记意味着您运行Cassandra 2.0。

1)平行全面修复

 nodetool repair -par, or --parallel, means carry out a parallel repair.

根据this datastax blog entry

  

与顺序修复(如上所述)不同,并行修复同时为所有节点构造Merkle表。因此,不需要(或生成)快照。使用并行修复可以快速完成修复,或者在操作停机时允许在修复期间完全消耗资源。

2)子修复 nodetool接受开始和结束标记参数,如此

 nodetool repair -st (start token) -et (end token) $keyspace $columnfamily

为简单起见,请查看这个为您计算令牌并执行范围修复的python脚本: the nodetool documentation for Cassandra 2.0

让我指出两个备选方案:

A)Jeff Jirsa指出增量维修

这些都是从Cassandra 2.1开始提供的。在使用nodetool之前,您需要https://github.com/BrianGallew/cassandra_range_repair

nodetool repair -inc, or --incremental means do an incremental repair.

B) OpsCenter维修服务

对于我公司perform certain migration steps的几个群集,我们使用正在执行和管理小范围维修的itembase.com作为服务。

相关问题