solr碎片突然下降

dphi5xsq  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(270)

我每天在solr云中处理大约70亿个文档,其中有10个示例分别运行5gbxmx和xms值,这些示例被推送到一个名为“x”的集合中。它的模式有大约150多个字段,其中几乎所有字段都被索引。集合x有240个碎片,每个碎片有2个复制因子。
我目前面临的问题是,在240个碎片中,有3到4个碎片随机下降,但有以下例外:

org.apache.solr.common.SolrException: No registered leader was found after waiting for 4000ms , collection: X slice: shard118
    at org.apache.solr.common.cloud.ZkStateReader.getLeaderRetry(ZkStateReader.java:747)
    at org.apache.solr.common.cloud.ZkStateReader.getLeaderRetry(ZkStateReader.java:733)
    at org.apache.solr.cloud.RecoveryStrategy.doRecovery(RecoveryStrategy.java:305)
    at org.apache.solr.cloud.RecoveryStrategy.run(RecoveryStrategy.java:221)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:229)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

接下来,我们在solr日志中发现了另一个异常:

ERROR (zkCallback-4-thread-4-processing-n:<IP>:8983_solr) [c:X s:shard63 r:core_node57 x:X_shard63_replica1] o.a.s.c.Overseer Could not create Overseer node
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired for /overseer
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:127)
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
    at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
    at org.apache.solr.common.cloud.SolrZkClient$9.execute(SolrZkClient.java:391)
    at org.apache.solr.common.cloud.SolrZkClient$9.execute(SolrZkClient.java:388)
    at org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:60)
    at org.apache.solr.common.cloud.SolrZkClient.create(SolrZkClient.java:388)
    at org.apache.solr.cloud.Overseer.createOverseerNode(Overseer.java:731)
    at org.apache.solr.cloud.Overseer.getStateUpdateQueue(Overseer.java:604)
    at org.apache.solr.cloud.Overseer.getStateUpdateQueue(Overseer.java:591)
    at org.apache.solr.cloud.ShardLeaderElectionContext.runLeaderProcess(ElectionContext.java:314)
    at org.apache.solr.cloud.LeaderElector.runIamLeaderProcess(LeaderElector.java:170)
    at org.apache.solr.cloud.LeaderElector.checkIfIamLeader(LeaderElector.java:135)
    at org.apache.solr.cloud.LeaderElector.access$200(LeaderElector.java:56)
    at org.apache.solr.cloud.LeaderElector$ElectionWatcher.process(LeaderElector.java:348)
    at org.apache.solr.common.cloud.SolrZkClient$3.lambda$process$0(SolrZkClient.java:268)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:229)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

作为一个解决方案,我删除了所有的副本,并重新创建他们的碎片,这是下降。这解决了问题,但它的工作间歇。
此外,如果找不到同步副本,这也有丢失大量数据的风险。
谁能给我一个更好的方法来解决这个问题吗。同样,这也发生在生产中,因此我无法重新创建集合(这解决了问题,但同一问题可能会在一段时间后再次出现),也无法重新启动zookeeper,因为许多其他spark作业都依赖于同一个集合。
我被困在这里面很久了。
更新:
我们没有在solrcloud上执行任何操作,因此碎片可能会掉落。发生的唯一操作是在该集合上运行spark批处理作业来处理数据。spark batch作业每天运行两次,但在这段时间内碎片不会掉落。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题