【问题标题】:Clarifications about nodetool repair -pr关于nodetool repair -pr的说明
【发布时间】:2014-11-18 17:30:04
【问题描述】:

来自documentation

使用 nodetool repair -pr (--partitioner-range) 选项仅修复该节点的主要范围,该范围的其他副本仍然必须执行 Merkle 树计算,从而导致验证压缩。因为所有副本都在同时压缩,所有节点可能对这部分数据的响应速度很慢

可能永远不会有任何时候我可以接受所有节点对数据的某个部分变慢。但我想知道:为什么会这样做(或者可能只是与文档中的“-par”选项混淆?!),而nodetool repair 似乎是smarter:

默认情况下,repair 命令会立即对每个副本进行快照,然后从快照中依次修复每个副本。例如,如果你有 RF=3 并且 A、B 和 C 代表三个副本,则此命令立即对每个副本进行快照,然后从快照中顺序修复每个副本(AB,AC, BC) 而不是一次性修复 A、B 和 C。这允许动态告密者通过其他副本来维持您的应用程序的性能,因为快照中至少有一个副本没有进行修复

不过,datastax 博客addresses this issue

但是,第一阶段可能会占用大量磁盘 io。您可以通过压缩限制在一定程度上缓解这种情况(因为这个阶段就是我们所说的验证压缩。)有时这还不够,有些人试图通过使用 -pr (-partitioner-range) 来进一步缓解这种情况nodetool repair 的选项,它只修复该节点的主要范围。不幸的是,该范围的其他副本仍然必须执行 Merkle 树计算,从而导致验证压缩。这可能是一个问题,因为所有副本将同时执行此操作,这可能会使它们都响应您的那部分数据的速度变慢。幸运的是,使用 -snapshot 选项可以解决这个问题。

这可能很好,但实际上,nodetool repair 没有 -snapshot 选项(请参阅手册页或 documentation)(此选项是否已删除?!)

总的来说,

  • 似乎我不能使用nodetool repair -pr,因为我总是需要至少保持系统足够的响应以一致地读/写ONE,而没有明显的延迟。 (注意:我们只有一个数据中心。)还是我遗漏/误解了什么?
  • 为什么nodetool repair 聪明,让一个节点保持响应,而nodetool repair -pr 让所有节点对部分数据变慢?
  • -snapshot 选项在哪里:它是否已被删除、从未实现,或者它现在是否可以自动像这样工作,在使用 nodetool repair -pr 时也是如此?

【问题讨论】:

  • 似乎可以安全地假设在撰写博客时(2013 年 7 月)有一个快照选项,因为 Cassandra 1.2 文档讨论了一个节点工具修复-快照选项:datastax.com/documentation/cassandra/1.2/cassandra/operations/…
  • 此文档包含一些 nodetool 使用信息(不推荐使用 -pr 选项)并包含使用并行 (par) 选项的示例。 datastax.com/documentation/cassandra/2.1/cassandra/tools/…
  • @catpaws:谢谢,您的两个 cmets 都包含一些非常有价值的信息(实际上不在 2.0 文档中)!
  • 我认为 -snapshot 选项在 2.0 中已成为默认行为,而添加了 -par 选项以允许访问以前的行为(如果您可以接受对性能和/或希望修复更快完成。
  • @catpaws - 奇怪的是,从您引用的文档链接的 this doc 说 -pr 选项建议用于日常维护。

标签: cassandra nodetool


【解决方案1】:

以下博客解决了这些问题:

http://www.datastax.com/dev/blog/repair-in-cassandra

一个简单的nodetool repair 不仅会启动对节点本身的修复,而且还会启动包含副本的所有节点(如果其范围)。虽然这没问题,但它非常昂贵,而且通常不是您在高峰时段在繁忙的生产系统上执行的操作。

因此,nodetool repair -pr 将对该节点上的主要范围进行修复。正如博客所说,您需要在集群的每个节点上运行它。拥有大型生产系统的客户通常会在整个集群中以滚动方式使用它。

另一方面,Datastax OpsCenter 提供repair service,它始终运行较小的子范围修复,因此尽管您始终在后台以较低的资源级别对其进行修复。

至于快照,运行常规修复将调用您所说的快照,您也可以使用nodetool snapshot自己调用快照

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2017-08-28
    • 2021-06-18
    • 1970-01-01
    • 2018-12-10
    • 2015-11-27
    • 1970-01-01
    • 2019-08-29
    • 2019-05-06
    相关资源
    最近更新 更多