Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 在卡桑德拉有哪些选项可以加速全面修复?_Cassandra_Cassandra 2.0 - Fatal编程技术网

Cassandra 在卡桑德拉有哪些选项可以加速全面修复?

Cassandra 在卡桑德拉有哪些选项可以加速全面修复?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,我有一个卡桑德拉数据中心,我想对它进行全面修复。数据中心用于分析/批处理,我愿意牺牲延迟来加速全面修复(nodetool repair)。对数据中心的写入是适度的 我有哪些选项可以加快全面修复的速度?一些想法: 增加流吞吐量 我想我可以禁用自动比较并暂时降低压缩吞吐量。但我不确定我是否想那样做 其他信息: 我正在运行SSD,但没有为此花费任何时间调整cassandra.yaml 默认情况下,完全修复按顺序运行。节点数据集的状态和差异存储在二叉树中。重建这些是这里的主要因素。根据“每次执行修

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

我有哪些选项可以加快全面修复的速度?一些想法:

  • 增加流吞吐量
  • 我想我可以禁用自动比较并暂时降低压缩吞吐量。但我不确定我是否想那样做
其他信息:

  • 我正在运行SSD,但没有为此花费任何时间调整
    cassandra.yaml

默认情况下,完全修复按顺序运行。节点数据集的状态和差异存储在二叉树中。重建这些是这里的主要因素。根据“每次执行修复时,都必须计算树,参与修复的每个节点都必须从其存储的所有SSTABLE中构造其merkle树,这使得计算非常昂贵。”

我认为显著提高完全修复速度的唯一方法是以并行运行或逐子范围修复。您的标记意味着您运行Cassandra 2.0

1)并行全修复

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

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

2)子范围修复 nodetool接受开始和结束令牌参数,如下所示

 nodetool repair -st (start token) -et (end token) $keyspace $columnfamily
为了简单起见,请查看此python脚本,它为您计算令牌并执行范围修复:

让我指出两个备选方案:

A) Jeff Jirsa指出了增量维修

从Cassandra 2.1开始提供这些功能。在使用nodetool之前,您需要:

nodetool repair -inc, or --incremental means do an incremental repair.
B) OpsCenter维修服务


对于我公司的两个集群,我们使用作为服务执行和管理小范围修复的。

运行修复的最快方法不是使用VNode,而是使用增量修复。您可以进行的所有其他调整都无法接近您将从这两个选项中看到的速度改进。+1。您可以运行8个令牌,但您必须自己管理它们。这在vnode的好处方面提供了一个不错的平衡,但操作上的麻烦要小得多。