【问题标题】:DSE SolR Query Result Inconsistencies Inconsistent ResultsetsDSE SolR 查询结果不一致 结果集不一致
【发布时间】:2014-09-21 00:37:09
【问题描述】:

我们正在运行一个 DSE 3.2.2 集群,该集群启用了 cassandra 和 SolR,在虚拟机上的特定集群中运行了 3 个节点和 2 个复制因子。

使用具有默认一致性级别(最近更改为仲裁)的 java 客户端将数据直接写入 c*。

问题是在查询索引时找到的文档数量变化很大。因此,对某些数值使用 stats 组件也会产生不一致的结果。

如果当前没有写入数据,情况也是如此。从那以后,我手动触发了对该列族的 nodetool 修复,这触发了二级索引的重新索引(这需要大约 5-6 小时)。之后,结果仍然不一致。

在我们的用例中,过时几秒钟的数据不是问题,所以the workaround via session stickyness 并没有为我解决这个问题。问题是数据在几天后仍然不一致。

接下来,complete re-index with wiping the data 在列表中,但需要一些时间才能完成。

更新:我将升级到最新版本的 C* 和 DSE,而不是擦除和重新索引,然后运行修复,然后运行重新索引并尽快报告(至少几天) .

非常感谢任何有关查询不一致的建议或分享经验!

更新 #1

查询结果仍然不一致。每个节点似乎都会为我的查询返回不同数量的文档。 集群已升级到 4.5.1,sstables 已升级,修复已执行,整个 SolR 索引已使用 SolR GUI 的完整重建索引触发器重建。

数据源表仍在使用“旧”压缩存储选项。

更新 #2

在最新的 cmets 之后,我不确定是否同时运行了进一步的插入。所以我确保推迟任何插入,运行 nodetool repair,完全重建索​​引。

查询似乎没问题! 这似乎意味着在我上次尝试后不一致已经重新出现,并且是重建索引后一些插入的结果。我会尝试确认这会再次开始插入。

更新 #3 所以看起来事情又稳定了!升级似乎最初解决了这些问题,但由于我们在日志文件中发现的changed default transport from tcp to http 的问题,不一致仍然存在。两天前切换回http,修复并重新索引。所有插入,因为没有任何问题。谢谢您的帮助!稍后我会研究 tcpswitch。

【问题讨论】:

  • 如果您使用 java 驱动程序插入数据,请确保检查您的 solrvalidation.log 是否有错误。还要检查您的 system.log 文件是否有任何索引错误。当通过 Cassandra 接口插入时,您不会从插入中得到 Solr 错误,因为索引是异步发生的。
  • 所以回顾一下:1) 升级到 4.5.1。 2)修复所有节点并重新索引。 3) 没有 运行任何进一步的插入。然而,查询结果仍然不一致:是吗?

标签: solr datastax-enterprise


【解决方案1】:

长期索引不一致主要是由 Cassandra 节点上的“丢弃突变”引起的:当由于满足所需的 CL 而正确地向客户端确认写入时会发生这种情况,但某些节点“超出 CL”实际上并没有写它,这意味着他们也没有索引它。

这种不一致由 Cassandra 通过读取修复和提示切换自动解决,但也可能需要手动修复节点;在任何情况下,重新索引都无济于事,因为不一致首先出现在数据库级别。

从 3.2.5 开始的 DSE 版本应该包含一个 Cassandra 错误修复,可以大大减少丢弃的突变:https://issues.apache.org/jira/browse/CASSANDRA-6510

请告诉我们您的 DSE 版本,以及升级是否有帮助。

【讨论】:

  • 安装的版本是3.2.2。我现在正在安排升级到最新版本,之后会更新我的问题。谢谢!
【解决方案2】:

4.x 系列版本中修复了偶尔出现的不一致(例如所描述的内容)。是否可以升级到较新的版本?

【讨论】:

  • 谢谢!我检查了发行说明,但没有发现任何关于不一致的非常具体的说明,你能指出我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多