【问题标题】:Increasing RF to 3 from 1 Causes Data Misses将 RF 从 1 增加到 3 会导致数据丢失
【发布时间】:2013-11-25 08:33:54
【问题描述】:

将 DSE 与 SOLR 结合使用,我们将 RF 从 1 增加到 3。我们立即注意到 SOLR 查询导致的数据丢失与 1:3 的比率一致。为了使用带有 SOLR 的 DSE 3.1.3 将 RF 从 1 增加到 3,我们需要做一些特别的事情吗?

编辑: 我知道应该运行修复以获取其他节点上的数据,并且我们正在运行修复。 但是,仍然不应提供任何空白结果,因为这是布隆过滤器的用途。

我似乎误解了布隆过滤器的使用。看来我必须将 CL 提高到ALL,然后再提高 RF,并在维修完成后将其降回。

【问题讨论】:

    标签: solr cassandra datastax-enterprise


    【解决方案1】:

    如果集群中已经有数据,则需要为每个节点运行nodetool repair,以强制重新平衡数据以匹配新的 RF。

    【讨论】:

    • 我知道 re 应该进行修复,但同时这会导致数据检索的抖动?我过去在增加射频时没有看到这种情况发生。据我了解,布隆过滤器应该可以防止这种情况发生。
    • 这取决于您的一致性级别。如果您将 RF 从 1 增加到 3 并在 CL.QUORUM 读取,那么如果 Cassandra 选择没有数据的两个节点,您将得到一个空结果。此 RF 增加的唯一安全 CL 是 CL.ALL,直到修复完成。布隆过滤器对此没有帮助,它们只是用于确定哪些本地 SSTables 包含给定的键。
    • 我明白了,我过去一定很幸运。您能否更新您的答案以包括阅读ALL
    【解决方案2】:

    布隆过滤器在 Cassandra 中用于高效访问磁盘数据,它们与 Solr 分布式查询无关。

    您看到的数据少于预期的原因是您的集群元数据(更具体地说是令牌/副本分配)发生了变化,但实际数据由于等待修复而尚未重新定位:因此,Solr 正在使用更新的集群元数据以正确运行分布式查询,同时考虑到新的 RF,但实际数据还没有被检索到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      相关资源
      最近更新 更多