节点启动期间出错:无法启动DSE服务器/插件激活失败/无法找到核心

时间:2015-02-13 21:37:50

标签: solr cassandra datastax-enterprise datastax

我已经有很长一段时间没有这些问题,但我最初忽略了它们,因为我仍然可以启动我的节点。然而,最近其中一个问题变得更加严重,现在它需要我进行大量尝试才能成功启动节点。

问题#1 :无法启动DSE服务器/插件激活失败/无法找到核心

ERROR [main] 2015-01-28 03:30:40,058 DseDaemon.java (line 492) Unable to start DSE server.
java.lang.RuntimeException: com.datastax.bdp.plugin.PluginManager$PluginActivationException: Plugin activation failed
        at com.datastax.bdp.plugin.PluginManager.activate(PluginManager.java:135)
        at com.datastax.bdp.server.DseDaemon.start(DseDaemon.java:480)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:509)
        at com.datastax.bdp.server.DseDaemon.main(DseDaemon.java:659)
Caused by: com.datastax.bdp.plugin.PluginManager$PluginActivationException: Plugin activation failed
        at com.datastax.bdp.plugin.PluginManager.activate(PluginManager.java:284)
        at com.datastax.bdp.plugin.PluginManager.activate(PluginManager.java:128)
        ... 3 more
Caused by: java.lang.IllegalStateException: Cannot find core: myks.mycf
        at com.datastax.bdp.search.solr.core.SolrCoreResourceManager.doWaitForCore(SolrCoreResourceManager.java:742)
        at com.datastax.bdp.search.solr.core.SolrCoreResourceManager.waitForCore(SolrCoreResourceManager.java:478)
        at com.datastax.bdp.plugin.SolrContainerPlugin.waitForSecondaryIndexesLoading(SolrContainerPlugin.java:237)
        at com.datastax.bdp.plugin.SolrContainerPlugin.onActivate(SolrContainerPlugin.java:98)
        at com.datastax.bdp.plugin.PluginManager.initialize(PluginManager.java:334)
        at com.datastax.bdp.plugin.PluginManager.activate(PluginManager.java:263)
        ... 4 more
 INFO [Thread-3] 2015-01-28 03:30:40,059 DseDaemon.java (line 505) DSE shutting down...
 INFO [StorageServiceShutdownHook] 2015-01-28 03:30:40,164 Gossiper.java (line 1307) Announcing shutdown
 INFO [Thread-3] 2015-01-28 03:30:40,620 PluginManager.java (line 356) All plugins are stopped.
 INFO [Thread-3] 2015-01-28 03:30:40,620 CassandraDaemon.java (line 463) Cassandra shutting down...
 INFO [StorageServiceShutdownHook] 2015-01-28 03:30:42,165 MessagingService.java (line 701) Waiting for messaging service to quiesce
 INFO [ACCEPT-/144.76.201.233] 2015-01-28 03:30:42,814 MessagingService.java (line 941) MessagingService has terminated the accept() thread

此异常始于"温和"问题 - 温和,因为虽然它会阻止节点在发生时启动,但通常需要我再试一次才能成功启动受影响的节点。然而,大约两周前,在我没有重新启动我的任何节点很长一段时间后,我发现我现在需要更多的尝试(20+)才能启动一个节点。

从堆栈跟踪中,它看起来像一个超时问题(在doWaitForCore()中);但我找不到一个设置来增加DSE在放弃之前等待核心加载的时间。堆栈跟踪中提到的核心始终是相同的,我认为这是因为它是我最大的核心(约14亿条记录),并且加载时间最长。但是当我成功启动节点时,没有任何错误迹象 - 我可以像任何其他核心一样查询核心。

-

还有两个与上述问题有关或可能没有关系的问题。它们两者总是在启动时出现;与第一个不同,它们导致启动失败(即它们也在节点成功启动时出现)

问题#2 :无效号码:静态

ERROR [searcherExecutor-67-thread-1] 2015-01-28 04:26:49,691 SolrException.java (line 124) org.apache.solr.common.SolrException: Invalid Number: static
        at org.apache.solr.schema.TrieField.readableToIndexed(TrieField.java:396)
        at org.apache.solr.schema.FieldType.getFieldQuery(FieldType.java:697)
        at org.apache.solr.schema.TrieField.getFieldQuery(TrieField.java:343)
        at org.apache.solr.parser.SolrQueryParserBase.getFieldQuery(SolrQueryParserBase.java:741)
        at org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:545)
        at org.apache.solr.parser.QueryParser.Term(QueryParser.java:300)
        at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:186)
        at org.apache.solr.parser.QueryParser.Query(QueryParser.java:108)
        at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:97)
        at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:153)
        at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50)
        at org.apache.solr.search.QParser.getQuery(QParser.java:143)
        at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:135)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:183)

我查看了我导入的数据,但我无法找到错误提供的数据值,因为"静态"。在我编写的将CSV转换为SSTables的java应用程序中,我将所有数值转换为int / long / double,具体取决于字段类型,所以我真的不认为它与我的数据有关。

问题#3 :无法在info bean上获取getStatistics com.datastax.bdp.search.solr.FilterCacheMBean

WARN [SolrSecondaryIndex myks.mycf2 index initializer.] 2015-01-28 04:26:51,770 JmxMonitoredMap.java (line 256) Could not getStatistics on info bean com.datastax.bdp.search.solr.FilterCacheMBean
java.lang.RuntimeException: java.lang.ClassCastException: org.apache.lucene.search.FieldCache$CreationPlaceholder cannot be cast to org.apache.solr.search.SolrCache
        at com.datastax.bdp.search.solr.FilterCacheMBean.getStatistics(FilterCacheMBean.java:185)
        at org.apache.solr.core.JmxMonitoredMap$SolrDynamicMBean.getMBeanInfo(JmxMonitoredMap.java:236)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getNewMBeanClassName(DefaultMBeanServerInterceptor.java:333)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:319)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
        at org.apache.solr.core.JmxMonitoredMap.put(JmxMonitoredMap.java:140)
        at org.apache.solr.core.JmxMonitoredMap.put(JmxMonitoredMap.java:51)
        at com.datastax.bdp.search.solr.core.CassandraCoreContainer.registerExtraMBeans(CassandraCoreContainer.java:679)
        at com.datastax.bdp.search.solr.core.CassandraCoreContainer.register(CassandraCoreContainer.java:427)
        at com.datastax.bdp.search.solr.core.CassandraCoreContainer.doLoad(CassandraCoreContainer.java:757)
        at com.datastax.bdp.search.solr.core.CassandraCoreContainer.load(CassandraCoreContainer.java:162)
        at com.datastax.bdp.search.solr.AbstractSolrSecondaryIndex$2.run(AbstractSolrSecondaryIndex.java:882)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: org.apache.lucene.search.FieldCache$CreationPlaceholder cannot be cast to org.apache.solr.search.SolrCache
        at com.datastax.bdp.search.solr.FilterCacheMBean.getStatistics(FilterCacheMBean.java:174)
        ... 16 more

我完全不知道这是什么。

-

之前是否有人遇到过这些错误/异常/警告?你做了什么?

2 个答案:

答案 0 :(得分:2)

问题#1:加载核心的最长等待时间是1分钟的硬编码。因此,您的假设是正确的:由于加载此特定内核的时间过长,非常大的内核或数百个内核可能会阻止节点启动。在下一个补丁版本(4.5.6,4.6.1)中,我们通过在dse.yaml中创建新选项 load_max_time_per_core 来解决此问题。此选项允许您从1分钟开始增加核心加载的最长等待时间。例如,对于500个核心,您需要将 load_max_time_per_core 增加到大约3分钟。

问题#2:不幸的是,我不知道是什么导致这种情况。我们需要有关此的更多信息,以了解它为何会发生。

问题#3:我们目前正在调查这可能是什么。

答案 1 :(得分:1)

关于问题#2,您确定在solrconfig中没有查询错误的QuerySenderListener吗?